简单的MD5加密以及解决error 50问题,针对有道翻译。

前言

对于一些网站,有很多的反爬手段,其中就包括一些加密的的算法,今天我就简单的MD5加密分享一下我自己的看法和理解。

1.首先,打开有道翻译,打开开发者工具,在翻译里面我们输入cat,在开发者工具里面的网络中点开XHR查看我们所要的数据,如图:

当然我们也可以选择更简单的方法直接把标头里面的表单数据全部复制下来就行,不过这里我们采用可以说是比较麻烦的事吧!

2.再次输入dog,对比一下俩次的标头里面的表单数据,如图:

我们发现里面的只有一些元素的值是变化的, 比如:salt,sign以及its。为了用python去实现这几个参数的数值,我们先查找一个带有sign的js文件,因为这个sign看上去像是一串加密的数据,经过查找我们找到了这个:

观察一下我们发现了这是一个MD5的加密形式,其中ts和外面表单中的lts一样的,我们把(new Date).getTime()放到左边的控制台中我们发现这个数据和我们python中的时间戳有点像,但是呢这个是13位数,而python中的时间戳是一个18位数的浮点数(其中前十位数是个位数以上的,后8位数是小数),所以我们需要对其转化成13位数,具体的转化这里就不再解释。同样的方法,发现salt就是时间戳再加上一个0到9的数,然后这个sign,我们采用断点的方法发现sign就是fanyideskweb加e(既要翻译的内容)加salt再加上Tbh5E8=q6U3EXe+&L[4c@的一个字符串进行的MD5加密

3.对于MD5加密python中有一个生成它的hashlib模块,我们就只需要安装一下就行,以下是具体的加密代码如下:

4.总代码实现过程:

import requests
import random
from hashlib import md5
import time
url='https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41',
         'Cookie': 'OUTFOX_SEARCH_USER_ID=-504658381@182.105.109.35; OUTFOX_SEARCH_USER_ID_NCOO=652980213.7046475; fanyi-ad-id=109753; fanyi-ad-closed=1; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcJxXkY8b690bBArIUNx; ___rl__test__cookies=1623207848805',
         'Referer': 'https://fanyi.youdao.com/?keyfrom=dict2.index'}
word=input('请输入你需要翻译的内容:')
lts=str(int(time.time()*1000))
salt=lts+str(random.randint(0,9))
# a用来存储待加密的字符串
a='fanyideskweb'+word+salt+'Tbh5E8=q6U3EXe+&L[4c@'
md=md5()
# 把字符串转化成字节的形式,才能加密
md.update(a.encode())
sign=md.hexdigest()
data={'i': word,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salt,
'sign': sign,
'lts': lts,
'bv': '8d7eb197ef27eea128b1736965d36a09',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'}
response=requests.post(url,data=data,headers=headers).json()
print(response['translateResult'][0][0]['tgt'])

其中需要注意的是headers里面要加Cookie和Referer这俩个参数,不然会返回{'errorCode': 50}

总结.

本人也是刚入门爬虫不久,如果有什么写的不好的地方,还请各路大神留言。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值