有道登陆解密
简单分析网页,可以发现password是通过加密在传输
我们开启debug调试,找到加密的js文件,拷贝下来,然后在我们程序中调用js文件得到返回值成功登陆
import requests import execjs # http://account.youdao.com/login老接口地址 url = "https://logindict.youdao.com/login/acc/login" # 读取js文件 with open("logincom.js", "r", encoding="utf-8") as f: js_str = f.read() username = "*********" password = "qwer1234QWER" # 返回一个上下文 ctx = execjs.compile(js_str) password = ctx.call("hex_md5", password) # print(password) data = { "app": "web", "tp": "urstoken", "cf": "3", "fr": "1", "ru": "http://dict.youdao.com/search?q=as&tab=#keyfrom=${keyfrom}", "product": "DICT", "type": "1", "um": "true", "username": username, "password": password } headers = { "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36", "Referer":"http://account.youdao.com/login?service=dict&back_url=http%3A%2F%2Fdict.youdao.com%2Fsearch%3Fq%3Das%26tab%3D%23keyfrom%3D%24%7Bkeyfrom%7D", # "Cookie":"OUTFOX_SEARCH_USER_ID_NCOO=1082072868.6526275; [email protected]; YOUDAO_EAD_UUID=800e3e66-ce9f-442d-adbf-9b3979a21a3e; _ntes_nnid=2fe3d5c70463d0c7d9cb34cd85f28f28,1526368710759; JSESSIONID=abcyHuaJdyM6Db28go9ow; [email protected]|1527857737|2|mail163|11&19|shh&1527852495&youdaodict_client#shh&null#10#0#0|&0|youdaodict_client&mail163|[email protected]; ANTICSRF=cleared; DICT_LOGIN=8||1527889263933; DICT_FORCE=true; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|" } response = requests.post(url=url,data=data,headers=headers) with open('网页登录.html','wb') as f: f.write(response.content)