如何在不被封禁的情况下爬取职位列表

Lucas Mitchell
Automation Engineer
17-Apr-2026

TL;Dr:
- 轮换住宅代理: 使用高质量的住宅IP来避免被Indeed或LinkedIn等职位板标记。
- 模拟浏览器指纹: 使用工具如
curl_cffi匹配真实的浏览器配置文件的TLS指纹和HTTP头。 - 自动处理CAPTCHA: 集成可靠的求解器如CapSolver来处理Cloudflare Turnstile和reCAPTCHA挑战。
- 遵守robots.txt和速率限制: 实现随机延迟并遵循道德爬取指南以保持长期访问。
引言
网页爬取职位信息已成为招聘机构、市场研究人员和职位聚合器的核心手段。然而,主要的职位板已部署了复杂的安全部署措施,可以在几秒钟内阻止你的数据收集。如果你曾经在尝试爬取职位信息时遭遇立即的IP封禁或无尽的验证循环,你并不孤单。挑战在于让自动化脚本与人类浏览行为难以区分。本指南提供了一个全面的技术路线图,帮助你有效爬取职位信息并保持低检测率。
为什么职位板会阻止你的爬虫
Indeed、Glassdoor和LinkedIn等职位平台投入了大量资源用于安全防护,以保护其专有数据并确保网站稳定。他们主要使用四层检测机制来识别和阻止爬虫。
基于IP的声誉和速率限制
大多数职位板会跟踪来自单个IP地址的请求数量。如果你超过某个阈值,你的IP将被临时或永久列入黑名单。数据中心IP尤其容易被识别为属于服务器农场而非真实用户。
浏览器和TLS指纹识别
现代反机器人系统如Cloudflare和DataDome不仅关注你的User-Agent。它们分析你的TLS(传输层安全)握手,检查特定的密码套件和扩展。如果你的Python脚本使用默认的requests库,其JA3指纹会立即表明它是一个机器人。
行为分析
人类用户不会每0.5秒点击链接或以完全线性的方式导航。表现出机器人行为的爬虫——如固定请求间隔或缺少CSS/图像加载——会被行为分析引擎迅速标记。
CAPTCHA和JavaScript挑战
当网站怀疑但不确定时,它会触发挑战。这可能是一个简单的JavaScript执行检查,或是一个复杂的CAPTCHA。如果没有自动解决方法,你的爬取流程将完全停滞。
无检测职位爬取的关键技术
为了构建一个稳健的爬虫,你必须针对每一层检测采取特定的技术对策。
1. 实现住宅代理轮换
使用单一IP地址是最快被封禁的方式。相反,你应该使用住宅代理池。与数据中心IP不同,住宅IP由互联网服务提供商(ISP)分配给真实家庭,因此更难以与合法流量区分。
| 代理类型 | 检测风险 | 成本 | 最佳使用场景 |
|---|---|---|---|
| 数据中心 | 高 | 低 | 低安全网站、测试 |
| 住宅 | 低 | 中等 | Indeed、LinkedIn、Google职位 |
| 移动(4G/5G) | 非常低 | 高 | 高度反爬虫系统 |
当你爬取职位信息时,确保你的代理提供商支持自动轮换。这可以保证每次请求或每次会话都来自不同的地理位置和IP。
2. 掌握TLS指纹模拟
如前所述,标准库如requests或urllib有独特的TLS指纹。为了解决这个问题,你应该使用curl_cffi,它允许你的脚本模拟真实浏览器(如Chrome或Firefox)的TLS握手。
python
from curl_cffi import requests
# 模拟Chrome 120的TLS指纹
response = requests.get(
"https://www.indeed.com/jobs?q=software+engineer",
impersonate="chrome120",
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
}
)
print(response.status_code)
通过将你的User-Agent与对应的TLS配置文件匹配,你可以显著降低被Cloudflare或Akamai标记的风险。
3. 使用CapSolver处理CAPTCHA
即使你的头信息和代理设置完美,你最终仍会遇到挑战。职位板经常使用Cloudflare Turnstile或reCAPTCHA来验证用户。在大规模手动解决这些挑战是不可能的。这就是CapSolver成为你自动化流程中不可或缺的一部分的原因。
CapSolver提供了一个无缝的API来解决各种CAPTCHA类型。例如,如果你在使用Google职位API或爬取Indeed时遇到Cloudflare Turnstile挑战,你可以使用以下官方实现:
python
import requests
import time
api_key = "YOUR_CAPSOLVER_API_KEY"
site_key = "0x4XXXXXXXXXXXXXXXXX" # 在目标网站的HTML中找到
site_url = "https://www.target-job-board.com"
def solve_turnstile():
payload = {
"clientKey": api_key,
"task": {
"type": 'AntiTurnstileTaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
task_id = res.json().get("taskId")
if not task_id:
return None
while True:
time.sleep(1)
result_res = requests.post("https://api.capsolver.com/getTaskResult", json={"clientKey": api_key, "taskId": task_id})
result = result_res.json()
if result.get("status") == "ready":
return result.get("solution", {}).get('token')
if result.get("status") == "failed":
return None
token = solve_turnstile()
将此集成到你的工作流中可以确保你的爬虫无需人工干预即可继续任务,从而有效保持你的数据管道的正常运行。
领取你的CapSolver优惠码
立即提升你的自动化预算!
在充值CapSolver账户时使用优惠码 CAP26,每次充值可获得额外 5% 的奖励——无限制。
立即在你的CapSolver仪表板中领取
4. 优化请求头和引用来源
一个常见错误是发送“裸请求”。真实浏览器总是发送Referer头和各种Sec-CH-UA(客户端提示)头。当你爬取职位信息时,始终将引用来源设置为网站的主页或之前的搜索结果页面。
- User-Agent: 使用较新的、流行的字符串。
- Referer:
https://www.google.com/或网站自身的域名。 - Accept-Encoding:
gzip, deflate, br(确保你的代码可以解压缩这些内容)。
爬取策略比较总结
| 策略 | 有效性 | 实现难度 | 推荐用于 |
|---|---|---|---|
| 基础Python请求 | 非常低 | 低 | 非保护的个人博客 |
| 无头浏览器(Selenium) | 中等 | 中等 | 有大量JavaScript的网站 |
| 隐身浏览器 + 代理 | 高 | 高 | Indeed、Glassdoor、LinkedIn |
| 网页爬取API | 非常高 | 低 | 企业级职位数据提取 |
道德和法律考量
虽然技术成功很重要,但你必须优先考虑道德爬取。始终检查网站的robots.txt文件和使用条款。根据< a href="https://www.w3.org/TR/robots-txt/" rel="nofollow">万维网联盟(W3C)的指南,道德的数据收集涉及尊重目标服务器的健康,通过不发送过多请求。此外,< a href="https://www.eff.org" rel="nofollow">电子前沿基金会强调,爬取公开可用数据通常受到保护,但你应该避免访问私人用户信息或在未经许可的情况下破解登录墙。
结论
成功爬取职位信息而不被阻止需要多层方法。通过结合住宅代理轮换、TLS指纹模拟和通过CapSolver自动处理CAPTCHA,你可以构建一个模仿人类行为的稳健系统。请记住,网络爬虫环境在不断变化;紧跟最新的安全趋势是保持竞争优势的关键。
常见问题
1. 爬取职位信息是否合法?
一般来说,在许多司法管辖区爬取公开的职位信息是合法的,前提是不违反《计算机欺诈和滥用法》(CFAA)或版权法。对于具体用例,请始终咨询法律顾问。
2. 我应该多久轮换一次代理?
对于高安全网站如Indeed,最好每次请求或每隔几分钟轮换IP以避免模式检测。
3. 我可以不用账户爬取LinkedIn吗?
LinkedIn非常严格。虽然一些公开的个人资料和职位信息可见,但大部分数据需要登录。在登录后爬取会带来更高的法律和技术风险。
4. 为什么我的无头浏览器仍然被抓住?
标准的无头浏览器如Puppeteer或Selenium会留下“指纹”,例如navigator.webdriver = true。你应该使用插件如stealth来隐藏这些属性。
5. 避免IP封禁的最佳方式是什么?
避免IP封禁最有效的方法是结合住宅代理和随机请求间隔(抖动)。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

图像识别人工智能是如何工作的?| 技术指南
了解图像识别AI的工作原理。在本全面的技术指南中学习卷积神经网络、像素处理和实际应用。

Ethan Collins
17-Apr-2026

如何在不被封禁的情况下爬取职位列表
学习最佳的抓取求职信息而不被封禁的技术。精通Indeed抓取、Google职位搜索API和使用CapSolver的网页抓取API。

Lucas Mitchell
17-Apr-2026

为什么Chrome会阻止网站:安全与自动化访问的权衡解析
了解Chrome为何会阻止网站,从安全功能如安全浏览和SSL检查,到常见的错误如ERR_CONNECTION_REFUSED。了解这些如何影响自动化,并学习合法访问的策略,包括使用CapSolver解决验证码。

Ethan Collins
17-Apr-2026

reCAPTCHA 评分详解:范围、含义及如何提高它
了解 reCAPTCHA v3 分数范围(0.0 到 1.0)、其含义以及如何提高您的分数。学习如何处理低分并优化用户体验。

Rajinder Singh
16-Apr-2026

如何在车辆数据自动化中解决Cloudflare Turnstile
学习如何在车辆数据和公共记录自动化中处理Cloudflare人机验证。使用CapSolver和n8n高效自动化记录抓取。

Ethan Collins
16-Apr-2026

reCAPTCHA 无效的站点密钥或令牌?原因与解决指南
遇到“reCAPTCHA 无效的站点密钥”或“无效的 reCAPTCHA 令牌”错误?发现常见原因、逐步修复方法和故障排除技巧,以解决 reCAPTCHA 验证失败的问题。学习如何修复 reCAPTCHA 验证失败,请再试一次。

Aloísio Vítor
16-Apr-2026


