使用Python requests访问亚马逊Prime Video联系我们页面时被自动登出问题
问题产生原因
- 手动硬编码了请求头中的Cookie字段:
requests.Session本身会自动维护会话内的Cookie,你填写的旧Cookie和当前登录会话生成的新Cookie冲突,被亚马逊反爬系统识别为异常请求,直接终止会话触发登出。 - 登录请求头中content-length参数写死为固定值10182:每次提交的登录表单数据长度会随动态参数变化,错误的内容长度会被判定为恶意请求,直接失效当前登录会话。
- 同一会话内请求头不一致:登录阶段使用的User-Agent为
Chrome/92.0.4515.131,后续访问帮助页、联系页的User-Agent改为了Chrome/92.0.4515.159,UA突变触发亚马逊反爬校验,导致登出。 - 账号读取逻辑存在缺陷:
requests.Session()初始化在账号遍历循环外侧,循环只会覆盖email、password变量,最终仅会用acc.txt的最后一个账号发起登录,且如果acc.txt为空会直接报错。 - 亚马逊反爬机制校验:亚马逊有完善的机器人检测逻辑,单纯的requests请求未处理动态JS校验参数、浏览器指纹等校验项,登录会话会被判定为非真实用户操作,被强制下线。
对应的解决方法
- 删除所有请求头中手动填写的Cookie字段,全程让
requests.Session自动管理会话Cookie,避免新旧Cookie冲突。 - 删除登录请求头中硬编码的
content-length参数,requests会自动根据提交的表单数据计算正确的长度值,无需手动指定。 - 统一整个会话所有请求的User-Agent,不要中途修改UA值,保持请求特征一致性。
- 调整账号遍历逻辑:将Session初始化、登录、后续页面请求的逻辑全部放到for循环内部,保证每个账号对应独立的会话。
- 补充后续请求的完整头信息:访问帮助页、联系我们页的请求不要仅传User-Agent,补齐accept、accept-language、referer等和登录请求一致的头字段,降低被识别为异常请求的概率。
- 若调整后仍触发反爬,改用带浏览器渲染的自动化方案,比如Selenium、Playwright,模拟真实用户的浏览器操作,无需手动处理复杂的动态校验参数,可绕过大部分反爬检测。
内容的提问来源于stack exchange,提问作者ahmad tareq
相关产品推荐
相关产品推荐

