如何用Python实现网站自动登录:处理动态MD5加密密码
解决网站自动登录的MD5加密密码生成问题
你需要先把网站指定的固定前缀、原始密码、固定后缀拼接,再做MD5哈希得到十六进制字符串,才能生成正确的请求密码参数。具体步骤如下:
1. 转换八进制转义字符
网站里的\065、\057\373\261\270\106\356\071\007\121\106\031\115\166\071\222\233是八进制转义字符,先转换成Python对应的字节:
\065对应十进制53,即字节b'\x35'(ASCII字符'5')- 后缀的八进制转义逐个转换后,对应的字节串是
b'/xfb\xb1\xb8F\xee9\x07QF\x1dMv9\x92\x99'
2. 实现加密逻辑
使用Python内置的hashlib库完成MD5加密,核心逻辑:
- 拼接前缀字节、原始密码字节、后缀字节
- 计算拼接内容的MD5哈希
- 将哈希结果转成十六进制字符串,就是请求需要的
password值
3. 修改后的完整代码
import requests import hashlib sess = requests.session() # 网站指定的固定前缀和后缀字节 prefix = b'\x35' suffix = b'/xfb\xb1\xb8F\xee9\x07QF\x1dMv9\x92\x99' # 替换为你的真实登录信息 username = 'ExamplePassword123' raw_password = '你的原始登录密码' # 生成加密后的密码 combined_content = prefix + raw_password.encode('utf-8') + suffix encrypted_password = hashlib.md5(combined_content).hexdigest() url = "http://example.com/loginform" data = { 'username': username, 'password': encrypted_password, 'dst': '', 'popup': 'true', } r = sess.post(url, data=data) print(r.text)
关键注意点
- 如果网站密码编码不是UTF-8,需要把
encode('utf-8')替换为对应编码(比如GBK) - 可以通过浏览器开发者工具抓包验证加密结果是否和浏览器提交的一致,确保逻辑正确
内容的提问来源于stack exchange,提问作者DotSlash
相关产品推荐
相关产品推荐

