Python中模拟登录遇到RSA加密,JS的RSA都需要自己实现吗?
最近搞爬虫遇见一个 js 的 rsa 加密,断点跟进看了一下似乎是自己实现的 rsa 和 padding,试着取出来公钥用 Python 的 pycrypto 加密了一下 post 过去,也不行,返回说加密组件错误,就是无法解密咯。有点懵逼啊,js 是没有标准的 rsa 实现吗?
Python中模拟登录遇到RSA加密,JS的RSA都需要自己实现吗?
直接上无头浏览器 过了登陆拿了 cookies 再继续爬不就好了
遇到RSA加密的登录,不用自己从头实现。Python里有现成的库可以直接用。
最常用的就是 rsa 和 Crypto 这两个库。rsa 库更简单直接,Crypto 功能更全。一般用 rsa 就够了。
给你个例子,假设网站用 RSA 加密了密码,公钥是 (n, e) 两个大整数:
import rsa
import base64
# 假设从网页获取的公钥参数
public_key_n = 123456789... # 模数n,很长的一个整数
public_key_e = 65537 # 指数e,通常是65537
# 1. 用n和e创建公钥
pub_key = rsa.PublicKey(public_key_n, public_key_e)
# 2. 要加密的密码
password = "your_password"
# 3. 加密(需要转成bytes)
encrypted = rsa.encrypt(password.encode('utf-8'), pub_key)
# 4. 通常需要base64编码后提交
encrypted_b64 = base64.b64encode(encrypted).decode('utf-8')
print(f"加密后的密码: {encrypted_b64}")
如果网站用的不是标准 RSA,比如有特殊的填充方式或者格式,你可能需要:
- 用浏览器开发者工具看它具体怎么调用的
- 用
execjs库直接执行网页里的 JavaScript 加密函数 - 用
requests直接调用网站自己的加密接口(如果有的话)
总结:别自己造轮子,用现成的库就行。
问题是不能用啊。。。之前还想过直接用 execjs 调用 js,但是服务器没有这些包,实在要用的话还要找运维去添加,所以可以的话还是想直接 Python 代码搞定
呃 那就尴尬了 仔细看看 js 的报 和 python 生成的包的区别吧
淘宝的登录还是微博的登录,我都解决了。都是 RSA 加密
那就是参数写错了吧。。。
好吧,我昨天碰到一个前端用 aes-256-cbc 的… 无语
部署方式…我一个刚转正的应届生说了也不算啊
666,之前一直都是搞 app 的模拟登录,js 的还刚接触
感觉 aes 还好一些吧…起码 aes 加密结果都是一样的。rsa 有 padding 的话每次加密出来都不一样,只能 post 过去才知道加密对不对
crypto-js
这和你资历没啥关系,你现在这种方式,以后没法管理
啊,这个不支持 RSA,请无视
我考虑一下,可以的话下周组会跟负责人提一下,感谢提醒
借个楼谢谢了,萌新不能发帖。
http://www.ubssdic.com/main/zxzx/xxpl/qtgg/index.shtml
翻页内容是 json 形式的,抓包请求发现只有浏览器打开(刷新)状态下才能请求到,请问是啥机制的?如何解决
padding 随机啊
jsrsasign?


