为什么requests访问百度需要百度安全验证啊?

RandintX 2020-01-30 08:41:43
用浏览器直接访问https://www.baidu.com/s?wd=python没问题
header 是浏览器复制过来的

返回的页面是个百度安全验证的页面
https://wappass.baidu.com/static/captcha/tuxing.html?&ak=c27bbc89afca0463650ac9bde68ebe06&backurl=https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3Dpython&logid=9429735157699859545&signature=ab2baa7ec785cf123cfa8f498a9a0664×tamp=1580387558


代码如下

import requests

kw = {'wd' : 'python'}
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)\
AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/79.0.3945.130 Safari/537.36 Edg/79.0.309.71'}

r = requests.get("https://www.baidu.com/s?", params = kw , headers = headers)
r.encoding = 'utf-8'

f = open('baidu.html' , 'w' , encoding = 'utf-8')
f.write(r.text)
f.close()

print(r.url)
...全文
6442 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_73758745 2022-10-31
  • 打赏
  • 举报
回复

https 把s去了,headers里把cookie加上

孤芳不自赏 2020-01-30
  • 打赏
  • 举报
回复
你试一下把HTTPS改成http
Terryhualu 2021-12-01
  • 举报
回复
@孤芳不自赏 没用
孤芳不自赏 2021-12-01
  • 举报
回复
@Terryhualu 那就不改了,我随便打开个网页,把请求头换进去,可以正常请求网页,可能是请求头太老了。
孤芳不自赏 2021-12-01
  • 举报
回复
@Terryhualu 或者安装新的requests包

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧