使用Python requests访问allegro.pl复制Header和Cookie仍403如何解决
403错误修复方案
- 调整请求初始化顺序
你当前代码首次请求allegro首页时还未设置自定义headers,此时发送的是requests默认UA,特征非常明显,很容易被反爬系统标记。要先给session配置headers再发起首次请求,修正后的代码示例:
import requests headers = { 'authority': 'allegro.pl', 'dpr': '1', 'viewport-width': '1920', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 OPR/76.0.4017.177', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-language': 'en-US,en;q=0.9', } s = requests.Session() # 先设置headers再发请求 s.headers = headers r = s.get('https://allegro.pl') r = s.get('https://allegro.pl/oferta/world-of-warcraft-30-dni-pre-paid-klucz-wow-eu-9538042175')
- 处理TLS指纹识别
allegro.pl使用Cloudflare做反爬防护,普通requests的TLS JA3指纹和真实浏览器差异极大,即使Header完全一致也会被拦截。可以使用curl_cffi库模拟主流浏览器的指纹,替换原生requests请求,示例代码如下:
from curl_cffi import requests headers = [ # 按浏览器F12中显示的Header顺序填写,用元组列表保证顺序完全匹配 ('authority', 'allegro.pl'), ('dpr', '1'), ('viewport-width', '1920'), ('upgrade-insecure-requests', '1'), ('user-agent', 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 OPR/76.0.4017.177'), ('accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'), ('sec-fetch-site', 'none'), ('sec-fetch-mode', 'navigate'), ('sec-fetch-user', '?1'), ('sec-fetch-dest', 'document'), ('accept-language', 'en-US,en;q=0.9'), ] s = requests.Session() r = s.get('https://allegro.pl', headers=headers, impersonate='chrome110') r = s.get('https://allegro.pl/oferta/world-of-warcraft-30-dni-pre-paid-klucz-wow-eu-9538042175', headers=headers, impersonate='chrome110')
检查IP封禁情况
如果短时间内发起过大量请求,你的出口IP可能已经被临时拉黑,可尝试切换住宅代理IP再测试,数据中心代理IP被拦截的概率极高。不要直接复制浏览器的Cookie,浏览器Cookie绑定了对应浏览器的会话上下文、IP、用户代理,直接复制到脚本里大概率会失效,要通过脚本自身的会话流程获取Cookie。使用带反检测的无头浏览器
如果上述方案都不生效,直接使用Playwright+stealth插件或者Selenium+undetected-chromedriver启动真实浏览器内核发起请求,完全模拟用户操作,包括等待页面加载、少量滚动后再提取内容,避免被行为检测识别。
内容的提问来源于stack exchange,提问作者Kuba -a
相关产品推荐
相关产品推荐

