当我使用 Chrome 在此网站上发布内容时:“http://xh.5156edu.com/index.php”,我被重定向到一个新页面。但是,当我使用 python request 模块来发帖时,如下所示:
r = requests.post("http://xh.5156edu.com/index.php", data="f_key=%B7%AB&SearchString.x=0&SearchString.y=0")
状态码是200,内容不是我想要的。我确信该数据与 Chrome 发送的数据相同。我不明白脚本出了什么问题。我还尝试添加一些标题,但这也不起作用。
问题是 POST 在重定向后变成了 GET,这不是你想要的。
在这里查看我的答案https://stackoverflow.com/a/78845896/364818
简单地说,
requests
被故意破坏,在重定向后将 POST 转换为 GET,以模仿浏览器被破坏的方式...
您作为数据传递的实际上是查询参数。
这就是您所需要的:
import requests
params = {'f_key': '%B7%AB', 'SearchString.x': '0', 'SearchString.y': '0'}
(r := requests.post("http://xh.5156edu.com/index.php", params=params)).raise_for_status()
with open('x.html', 'w') as html:
html.write(r.text)
然后您可以打开 x.html 查看响应