请求发送失败的原因很多,常见的错误比如:
- 请求头中的UA设置失败。
- 请求头中的Referer设置失败。
- 请求头缺失,有些客户端会设置个性化请求头,不能只设置ua以及referer,但是通常的请求头只需要设置ua,referer以及cookie。
- post请求体中包含加密参数,没有逆向成功,确实请求体。
- post发送的是json数据,在发送post请求时需要写成request.post(json = json),而不能写成request.post(data = json),并且json需要是json格式而不能是字符串格式,否则会不完整的发送数据包。另外需要同时指定请求头中'Content-Type': 'application/json; charset=utf-8'
- post的json请求中如果含有null,python不能直接发送"null"的字符串过去,而应该使用None。
- 还有种可能,python的字典或者字符串转json后,key与value中间会有空格,服务端不能解析空格而报错等。
- 其他的奇怪的错误暂时没想到,欢迎补充
解决方法:
通过fiddler代理pycharm或者其他软件与正常数据包相比较,如果碰到不一样的可以选择编辑重发一点一点尝试。这是最好的办法了,如果使用fiddler后,无法正常发送请求,请参考:https://blog.csdn.net/qq_58192690/article/details/132767415