11

    技术2026-03-09  7

    1. js文件定位

    在network中通过发送账号密码的js报文中initiaor查询根据发送的数据中关键字在全部报文中search在登录按钮上的Element中Event listener 查找点击按钮触发的js请求

    2. 在python中执行js文件

    通过分析js文件,得出密码的加密过程,按照js文件的加密过程执行一次得出密码加密后数值,则可以将post的form表单数据写好,就可以实现登录。

    在python中执行js代码可以通过js2py模块,需要pip install js2py

    3. 登录实现代码

    import requests import js2py import json # 创建session对象 session = requests.session() # 创建headers,url url = 'http://activity.renren.com/livecell/rKey' headers = { 'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Mobile Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } session.headers = headers # 对rkey请求获取数据 response = session.get(url) # print(response.content.decode()) # 对获取的json数据加载 n = json.loads(response.content)['data'] print(n) # 创建关键代码需要的用户名和密码 t = { 'password' : '1xxxxxx' } # 获取关键代码需要的js的文件 rsa_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/RSA.js',).content.decode() bigint_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/BigInt.js',).content.decode() barrett_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/Barrett.js',).content.decode() # 创建js的运行环境 context = js2py.EvalJs() # 将js加载到运行环境中 context.execute(rsa_js) context.execute(bigint_js) context.execute(barrett_js) # 将参数加载到环境中 context.n = n context.t = t # 定义关键代码并加载到环境中 kw_js = ''' t.password = t.password.split("").reverse().join(""), setMaxDigits(130); var o = new RSAKeyPair(n.e,"",n.n) , r = encryptedString(o, t.password); ''' context.execute(kw_js) # 执行关键代码获取加密后的密码 print(context.r) # 创建form表单 data = { 'phoneNum': '173xxxxxxx', 'password': context.r, 'c1': -100, 'rKey': n['rkey'] } # 发送post请求登录 post_url = 'http://activity.renren.com/livecell/ajax/clog' response = session.post(post_url, data=data) # 对登录后的数据输出验证 print(response.content.decode())
    Processed: 0.023, SQL: 9