|
发表于 2024-2-27 22:30:30
|
显示全部楼层
本楼为最佳答案
鱼油提到使用 requests 库来发送POST请求。
如果在Fiddler或其他HTTP调试工具中可以成功执行请求,并且复制相同的请求头和请求体到Python中却得到“未登录”的响应,基本就是由以下几个原因导致的:
- Headers不完整或不正确:确保您复制了所有的请求头,包括那些可能看起来不重要的头(如User-Agent、Referer、Cookie等)。特别是Cookie头,这通常是用于维持会话状态的关键。
- 请求体格式问题:有时候,服务器可能对请求体的格式有特定要求。您需要确保如果原始请求是以JSON格式发送的,那么在Python中也应该使用json参数,如果是表单形式,应使用data参数。
- SSL/TLS验证问题:如果您的请求是通过HTTPS发送的,您可能需要在请求中添加一个参数来处理证书验证:verify=False。但这只应在调试时使用,因为它会使您的请求容易受到中间人攻击。
- 时间戳和动态令牌:某些API请求可能包含时间戳或其他动态生成的令牌,这些可能在您复制时是有效的,但在稍后的请求中可能已经失效。
- 会话状态:如果该请求依赖于之前请求中建立的会话状态,那么您需要确保这些状态(如登录会话的cookies)被存储并在随后的请求中正确使用。
- 编码问题:确保请求体的编码类型和内容匹配。例如,JSON应该是UTF-8编码。
- 重定向问题:有些请求可能会遇到重定向。默认情况下,requests库会自动处理重定向,但有时您可能需要禁用此功能或手动处理重定向。
从上到下挨个排除,必有解决方式哈~ |
|