爬取有道翻译时,发现有道使用了反爬虫机制,将sign和salt加密了,网上很多大神已经破解了(跪拜)
传送门:https://tendcode.com/article/youdao-spider/
本菜鸡用了最投机取巧的方法,将'http://fanyi.youdao.com/translate_o'中的'_o'去掉就行了(来源于https://www.pypypy.cn)
至于原理,本菜鸡还不会T - T
import requests
import time
import json
url='http://fanyi.youdao.com/translate' #去掉了'_o'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'}
word=input('请输入你想翻译的单词:')
data={
'i':word,
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
#'salt':'xxx', #去掉了_o后不用要salt、sign、ts等了
#'sign':'xxx',
#'ts':str(int(round(time.time()*1000))), #round() 四舍五入
'bv':'b5362300738e7f121e2c37609aaa6bb3',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_REALTlME'}
res=requests.post(url,data=data,headers=headers)
print(res.json()['translateResult'][0][0]['tgt'])