小白的第一次js逆向之某道翻译
能忍心看下去的肯定也是和我一样的小白吧,小白们入手都喜欢拿某道翻译入手,是的没错我也一样。。。。。下面是我第一次逆向的过程经验,后面我也会以文章的方式记录我的爬虫成长历史。
第一步检查源码
在浏览器界面按下F12进入开发者模式,打开某道翻译网站。在输入翻译内容后你会发现给你返回了ajax请求
接下来我们来看响应内容,发现是明文没加密,再具体看请求头。发现是个post请求,里的表单参数也是看不懂的。
可以看出salt,sign,lts,bv这是个参数是看不懂的
第二步搜索加密内容
看不懂就搜,ctrl+shift+f全局搜索salt,找到一条js里面含有salt点击打开这个js。
发现是一行格式并不规整,这个时候可以点击左下角的{}
然后就变成下面这种格式规整的了。
我们在js代码里面ctrl+f搜索刚才的参数,我们发现有12处,我们一处一处的来看当看到下面这一处时发现返回了加密的四个参数很可疑。
第三步打断点
在可疑的哪一行打上断点。
然后重新输入搜索内容
发现右边没有跳出翻译内容说明断点成功了
第三步找加密函数
将光标移到salt上面发现显示的就是header的内容证明已经加密,于是我们逆向回去发现
于是python复写为salt = str(int(time.time() * 1000)) + str(int(random.random()*10))
那么ts也出来了它复写为ts=int(time.time() * 1000)
接下来找bv参数,将鼠标放到下面如图位置
发现bv是User-Agent的md5加密复写为bv=hashlib.md5(str(“5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36”).encode(‘utf-8’)).hexdigest()
接下来是sign
发现是上面图片的一些字符串的拼接的md5加密复写为sign= hashlib.md5(str(“fanyideskweb” + e + str(salt) + “mmbP%A-r6U3Nw(n]BjuEU”).encode(‘utf-8’)).hexdigest()
然后写上请求头
headers = {
"Cookie": 'OUTFOX_SEARCH_USER_ID_NCOO=642873656.3243192; OUTFOX_SEARCH_USER_ID="-1816126791@10.108.160.19"; _ga=GA1.2.434622419.1578909502; _ntes_nnid=f4c96d313794593a0bb9a311af471452,1583376095745; P_INFO=13093712979|1585242495|1|youdaonote|00&99|null&null&null#hun&430100#10#0|&0||13093712979; JSESSIONID=aaaaKnXq0ihOQ7pkiBFgx; ___rl__test__cookies=1587517629157',
"Referer": "http://fanyi.youdao.com/",
"User-Agent": "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
}
post_data={
'i': '我是菜鸟',
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': '',
'sign': '',
'ts': '',
'bv': '',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME',
}
post_data['salt']=salt
post_data['sign']=sign
post_data['ts']=ts
post_data['bv']=bv
res=requests.post(headers=headers,url=url,data=post_data)
print(res.text)
运行你就可以得到正确响应内容了
【注】这是小白第一篇爬虫就是逆向的文章