网址:有道翻译 python
开发工具:pycharmweb
开发环境:python3.7, Windows10编程
使用工具包:requests,random,hashlibjson
先区分数据的加载方式 请求数据时网址是没有变化的 经过抓包获取到动态数据markdown
找到对应的数据接口 获取到网页的请求接口 请求方法是post请求cookie
post须要提交的数据网络
能够明显看出salt是时间戳 多个请求的数据进行比较 只有sign值是在不断变化的加密数据 找到数据的加密规则 找到加密文件dom
打上断点找到对应加密数据的位置 调试代码进入断点ide
sign值是由r.sign得来的 找到r的生成方式工具
找到最终的加密数据的位置
ts为时间戳
salt为时间戳加一个随机数 sign为MD5的加密方法生成的数据 sign是由时间戳的改变而改变的
明确加密的方式剩下的就是书写代码了
import time
import random
import hashlib
def main():
"""主程序"""
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
headers = {
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36',
'Origin': 'http://fanyi.youdao.com',
'Referer': 'http://fanyi.youdao.com/',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-1808168645@10.108.160.208; JSESSIONID=aaaRyVJv8oEwg7dPaWrux; OUTFOX_SEARCH_USER_ID_NCOO=704285648.1294403; ___rl__test__cookies=1602406917270'
}
i = input("请输入你要的数据:")
"""获取参数"""
lts = str(int(time.time()*100))
salt = lts + str(random.randint(0, 9))
content = "fanyideskweb" + i + salt + "]BjuETDhU)zqSxf-=B#7m"
sign = hashlib.md5(content.encode("utf-8")).hexdigest()
data = {
'action': 'FY_BY_CLICKBUTTION',
'bv': '9caf244986fe6d1de38207408302e500',
'client': 'fanyideskweb',
'doctype': 'json',
'from': 'AUTO',
'i': i,
'keyfrom': 'fanyi.web',
'lts': lts,
'salt': salt,
'sign': sign,
'smartresult': 'dict',
'to': 'AUTO',
'version': '2.1'
}
response = requests.post(url=url,headers=headers,data=data)
print(response.json()["translateResult"][0][0]["tgt"])
if __name__ == '__main__':
main()
复制代码
我是**白又白i**,一名喜欢分享知识的程序媛❤️
若是没有接触过编程这块的朋友看到这篇博客,发现不会的或者想要学习Python的,能够直接留言或者私我【很是感谢你的点赞、收藏、关注、评论,一键四连支持】