python 爬虫使用token无法登录

手动用浏览器登录目标网址后,
把响应数据里的token复制出来,
再复制到python的请求头里,
之后用python对某页面发起请求,
可以正常得到相应数据。


但是直接用python登录,获取到token后,

添加到请求头,
无法继续对后续的页面发起请求,响应代码500,
一般这是什么原因引起的呢?
该往哪个方向排查?


python登录和浏览器手动登录,
用的一模一样的请求头,
并且服务器响应的格式完全相同,
响应内容包括token看起来也没问题。

500的响应头 默认是服务器端错误,
核对下面信息:

  • 请求头
  • Payload
  • 响应格式

既然请求头 和 响应格式,你核对过了完全相同,那么就再核对下payload。
如果还是不行,如下所示。


其实如果你可以看到服务器端的输出日志的话,你可以看下500的具体报错是什么,
这种一般是服务器端接口代码逻辑报错,比如有传输过来的数据类型异常或者其它异常处理没考虑到导致的。
这样可以直接定位到具体的错误处,从而定位到具体的请求的错误原因


可以用下面方式检查下
1、下载POSTMAN,模拟请求,检查是否正确,如果模拟成功,进行下一步。
2、POSTMAN支持输出为CODE,支持Python requests格式的导出,复制粘贴后可以直接运行。

这种问题 根据你的排查手段,已经基本定位是 token不对导致的,那么问题就是 你用Python获取的token 不对,或者是格式不对

建议不要手动登录,如果是可以账号密码登录的话,建议建立一个session一步一步来,这样不用管token和cookie的问题,但直接模拟登录的话,难度可能有点大

我建议楼主贴出网址。
目前定位就是token不对劲,不然作为答主暂时无法给出起到真正解决问题的建议。

你要确认一下浏览器登陆后有没有自动跳转,有些请求是不能省略的,服务端要根据关键请求创建session。如果你只是模拟了登陆请求就发起你期望的请求可能造成服务器数据异常,也就是500的服务器错误。

500以上服务器错误,有可能你穿的值服务器无法解析,你看你穿的对不对,我觉得你没登录上,