提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
自学一下爬虫JS逆向,做个小笔记。本文涉及到MD5算法
MD5是一种将整个文件当作一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要的加密算法。
特性:
1.不可逆:没有系统有办法知道md5原来的文字是什么
2.高度离散性:无规律可循,不可预测
3.压缩性:任意长度的数据,算出的md5长度固定
4.弱碰撞性:已知原数据和其他md5的值,想找到一个具有相同md5值的数据很困难
用途:
密码加密存储:服务端记录密码的MD5,再次MD5比较验证即可判断密码合法性
数字签名:公开程序文件MD5码,可以通过验证MD5来判断是否被恶意修改
文件完整性验证:下载文件时,服务器返回信息中包含md5,可再次md5,比较验证md5判断是否完整有无丢包
文件上传:对比上传文件md5是否在服务器中存在
代码如下(示例):
import requests
import random
import time
from hashlib import md5
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Length': '241',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': '[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=1880497134.1129446; ___rl__test__cookies=1659941291109',
'Host': 'fanyi.youdao.com',
'Origin': 'https://fanyi.youdao.com',
'Referer': 'https://fanyi.youdao.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
代码如下(示例)(该处用的jupyterIDE):
word = input('请输入要翻译的单词')
lts = str(int(time.time()*1000))
salt = lts + str(random.randint(0,9))
#sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")
str_ = "fanyideskweb" + word + salt + "Ygy_4c=r#e#4EX^NUGUc5"
md = md5()
md.update(str_.encode())
sign = md.hexdigest()
data = {
'i': word,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salt,
'sign': sign,
'lts': lts,
'bv': '50b61ff102560ebc7bb0148b22d7715c',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_CLICKBUTTION'
}
html = requests.post(url="https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule",
data=data,headers=headers)
htmljson = html.json()
print(htmljson)
效果如下:
右击检查,再次操作刷新,找出差异,即为我们需要处理的字段
源码中搜索"sign",得出它们的加密方式,为 md5
其中,e 未知,通过打断点得知e为我们所输入的单词。
from hashlib import md5
str = string
md = md5()
md.update(str.encode())
result_md5 = md.hexdigest()
第一次简单js逆向练习,涉及md5算法,还是萌新,欢迎大佬们指正!