从Chrome复制的Glassdoor请求Curl在终端触发人机验证问题排查
解决Glassdoor爬取下一页请求的人机验证问题
核心原因
Glassdoor的反爬机制会严格校验请求的会话完整性和请求头真实性,直接复制的Curl请求缺少动态生成的会话Cookie、关键请求头,或者没有模拟正常浏览行为,所以会触发人机验证。
具体解决步骤
完整复制请求头与Cookie
从浏览器开发者工具的Network面板找到下一页的fetch请求,右键复制为Copy as cURL (bash),确保保留所有关键请求头:- 必须包含与浏览器完全一致的
User-Agent、当前页面的Referer、异步请求标识X-Requested-With: XMLHttpRequest,以及Accept、Accept-Language。 - 确保Cookie参数
-b里包含JSESSIONID、gdId、csrfToken、glassdoor_cookie_consent这些动态会话字段——复制前要保证浏览器已正常加载Glassdoor页面,甚至手动完成一次初始验证。
- 必须包含与浏览器完全一致的
动态提取关键参数
下一页请求里的csrfToken、pageNumber等参数不能硬编码:csrfToken通常在页面的<meta name="csrf-token">标签或Cookie中,爬取第一页时先提取该值,后续请求复用。pageNumber按递增逻辑生成,比如从1开始每次加1。
模拟人类浏览行为
- 每次请求后加入1-3秒的随机延迟(Python中用
time.sleep(random.uniform(1,3))),避免高频请求。 - 不要一次性请求超过10页,分批次爬取,中间可暂停几分钟。
- 每次请求后加入1-3秒的随机延迟(Python中用
修复官方API的Cookie提示
API请求需在请求头里手动带上完整Cookie字符串,包括glassdoor_cookie_consent=yes(表示同意Cookie政策)及会话相关字段,确保请求头的Cookie参数与浏览器完全一致。
示例:Python Requests实现
import requests import random import time # 从浏览器复制的完整请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Referer': 'https://www.glassdoor.com/Job/python-jobs-SRCH_KO0,6.htm?Autocomplete=', 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'application/json, text/javascript, */*; q=0.01', # 补充其他从浏览器复制的必要请求头 } # 从浏览器复制的完整Cookie cookies = { 'JSESSIONID': 'xxxxxx', 'gdId': 'xxxxxx', 'csrfToken': 'xxxxxx', 'glassdoor_cookie_consent': 'yes', # 补充其他Cookie字段 } # 下一页的API接口(从fetch请求复制) base_url = 'https://www.glassdoor.com/graphql' # 模拟爬取前3页 for page in range(1, 4): # 构造请求参数(从fetch的Payload复制,修改pageNumber) payload = { 'query': 'xxxxxx', # 从浏览器复制的GraphQL查询语句 'variables': { 'pageNumber': page, # 保持其他变量与浏览器一致 } } response = requests.post(base_url, headers=headers, cookies=cookies, json=payload) if response.status_code == 200: data = response.json() print(f"第{page}页数据获取成功") # 这里添加数据处理逻辑 else: print(f"第{page}页请求失败,状态码:{response.status_code}") # 随机延迟 time.sleep(random.uniform(1.5, 3))
注意事项
- Cookie有效期很短,每次爬取前需重新从浏览器复制最新Cookie。
- 若仍触发人机验证,可更换IP(如使用代理),或手动在浏览器完成一次验证后再复制Cookie。
- 遵守Glassdoor的Robots协议与使用条款,避免过度爬取导致账号封禁。
内容的提问来源于stack exchange,提问作者nlblack323
相关产品推荐
相关产品推荐

