方法二、通过js方式
1、CD进入项目目录
2、做国内资源隐射:npm install -g cnpm —registry=https://registry.npm.taobao.org
3、安装:cnpm install node-jsencrypt
安装成功之后多了以下文件夹
const JSEncrypt = require('node-jsencrypt')// 登陆function doLogin(pass_old,pk) {var encrypt = new JSEncrypt()var public_key = pkencrypt.setPublicKey(public_key)var pass_new = encrypt.encrypt(pass_old)return pass_new}#var pass_old = '123456'#var pk = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaP+rYm6rqTMP565UmMU6YXq46KtAN3zwDSO8LNa15p0lJfsaY8jXY7iLsZqQZrGYr2Aayp6hYZy+Q+AMB/VUiSpD9ojPyOQ7r9jsf9jZbTOL4kj6iLZn37fEhp4eLvRgy5EJCyQoFyLCsgLechBTlYl2eA95C3j4ZUFhiV6WFHQIDAQAB'#console.log(doLogin(pass_old,pk))
import execjsdef get_js(file_name,fun_name,*args):with open(file_name,'r',encoding='utf-8') as file_obj:js_code = file_obj.read()# 1、编译js文件cjs = execjs.compile(js_code)# 2、 执行js代码return cjs.call(fun_name,*args)
import requestsfrom shanzhi_rsa import encryptofrom lxml import etree# lxml.etree._Elementfrom lxml.etree import _Elementfrom tools import get_js# 目标urlurl = 'http://shanzhi.spbeen.com/login/'# 请求头header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36','Cookie': 'shanzhi_kmer=h9wm0ptr9kcuza527as3a43a6zuwzsid; csrftoken=yHdq0AaPEO1pyiC2zji4MmeyLRNcXVcZLNoHCT3izQ52lwvASvHv0jgsGG9kEXUN'}# 先从网页源码中得到csrfmiddlewaretoken和pkreponse_obj = requests.get(url, headers=header)tree = etree.HTML(reponse_obj.text)# 获取csrfmiddlewaretokencsrfmiddlewaretoken = tree.xpath('//input[@name="csrfmiddlewaretoken"]/@value')[0]# 获取pkpk = tree.xpath('//input[@id="pk"]/@value')[0]old_password = 'logic_00'new_password = get_js('shanzhi_js.js','doLogin',old_password,pk)data_dict = {'username': 'logic_00','password': new_password,'csrfmiddlewaretoken': csrfmiddlewaretoken}res = requests.post(url, headers=header, data=data_dict)print(res.text)
