You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

curl请求正常但Python requests触发IP封禁的问题排查

解决requests请求kleinanzeigen.de被封IP的问题

问题根源

kleinanzeigen.de的反爬系统能区分curl和requests的请求特征——requests默认的请求头、连接行为和curl不一样,直接用转换后的代码会被判定为非可信请求,而curl的请求特征刚好在网站的信任列表里,所以不会被封。

修复方法

  • 1. 1:1复刻curl的所有请求头
    把你用的curl命令里的所有请求头原封不动抄到requests的headers里,重点是User-Agent(别用requests默认的python-requests/xxx,直接用curl的,比如curl/8.5.0)、Accept、Accept-Language、Referer这些字段,一个都不能少。
  • 2. 对齐curl的会话和连接设置
    用requests.Session()来维持会话,和curl的会话行为保持一致;同时检查allow_redirects的设置是否和curl相同,必要时添加Connection: keep-alive这类头。
  • 3. 带上curl的Cookie
    执行curl命令时,把返回的Cookie内容提取出来,放到requests的cookies参数里,确保请求携带的Cookie和curl完全一致。
  • 4. 核对请求细节
    确认requests的请求方式(GET/POST)、URL参数、表单数据和curl完全匹配,别漏参数也别改格式。

示例代码

import requests

# 从你的curl命令里复制所有请求头
headers = {
    'User-Agent': 'curl/8.5.0',
    'Accept': '*/*',
    'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
    # 把curl里的其他请求头都加上
}

# 从curl响应里复制Cookie键值对
cookies = {
    'sessionId': 'xxx',
    'consent': 'xxx',
    # 其他Cookie内容
}

url = 'https://www.kleinanzeigen.de/s-iphone-13/k0'

# 使用Session维持会话
session = requests.Session()
response = session.get(url, headers=headers, cookies=cookies)

# 验证响应
print(response.status_code)
print(response.text[:500])

额外提醒

  • 别用requests频繁刷请求,保持和curl一样的请求间隔,避免触发频率限制。
  • 如果还是被封,试试换个代理IP,但要确保代理的稳定性,别用烂大街的免费代理。

内容的提问来源于stack exchange,提问作者otto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:55:01