老师,下面这个代码是为了下载搜狐登录界面的验证码图片,但是我换了几种方式发送请求,打印resp.text都是得到:
{"body":"","message":"Bad Request","status":400},但是打印的验证码图片链接又可以访问,这是为啥呢?
具体代码如下:
import execjs
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
'Referer': 'https://sohu.com/'}
# 获得验证码链接中的pagetoken和random参数
def get_form_data():
js_callback = """var randomName = function(prefix) {
nonce = (new Date).getTime();
return "passport403" + "_" + prefix + nonce++
}"""
ctx = execjs.compile(js_callback)
random_ = ctx.call('randomName', 'sdk')
js_pagetoken = """
var pagetoken = (new Date).getTime()+1
return pagetoken
"""
ctx_page = execjs.compile(js_pagetoken)
pagetoken = str(ctx_page.call(js_pagetoken))
return (pagetoken, random_)
pagetoken, random_ = get_form_data()
url = f"https://v4.passport.sohu.com/i/captcha/picture?pagetoken={pagetoken}&random={random_}"
# 发送请求
resp = requests.get(url,headers=headers)
print(resp.text)
# {"body":"","message":"Bad Request","status":400}
print(url)