JS代码:
window = global;
const JSEncrypt = require('node-jsencrypt');
function login_encrypt(arg) {
r = new JSEncrypt();
i = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCeiLxP4ZavN8qhI+x+whAiFpGWpY9y1AHSQC86qEMBVnmqC8vdZAfxxuQWeQaeMWG07lXhXegTjZ5wn9pHnjg15wbjRGSTfwuZxSFW6sS3GYlrg40ckqAagzIjkE+5OLPsdjVYQyhLfKxj/79oOfjl/lV3rQnk/SSczHW0PEyUbQIDAQAB"
r.setPublicKey(i);
e = arg
var a = r.encrypt(e);
return a
}
python代码:
# -*- coding: utf-8 -*-
import requests
import time
import execjs
headers = {
'Accept': '*/*',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Connection': 'keep-alive',
'Content-Type': 'application/json',
'Origin': 'https://36kr.com',
'Referer': 'https://36kr.com/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-site',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0',
'sec-ch-ua': '"Microsoft Edge";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
}
# 获取当前时间戳(秒)
current_timestamp_s = time.time()
# 转换为毫秒
current_timestamp_ms = int(current_timestamp_s * 1000)
mobileNo="13302775336"
password="123456Ma"
# 编译 JS 代码
Js = execjs.compile(open("36kr_algorithm.js", "r", encoding='utf-8').read())
mobileNo = Js.call("login_encrypt", mobileNo)
print("mobileNo:",mobileNo)
password = Js.call("login_encrypt", password)
print("password:",password)
json_data = {
'krtoken': '',
'partner_id': 'web',
'timestamp': current_timestamp_ms,
'param': {
'countryCode': '86',
'mobileNo': mobileNo,
'password': password
},
}
response = requests.post(
'https://gateway.36kr.com/api/mus/login/byMobilePassword',
headers=headers,
json=json_data,
)
# Note: json_data will not be serialized by requests
# exactly as it was in the original request.
#data = '{"krtoken":"","partner_id":"web","timestamp":1744253167679,"param":{"countryCode":"86","mobileNo":"ROgszTo2liH3v4DLwR75yZsn6/ZTcgVLpuK9e4miIiQfR5t47s8mDeGGxUrh0NcFWwBa26q/YvT4Ax8T6OD2orq5p6nB/Jrw4C/ozfjcJftB/wBaIfWnS5EXfte2f6wW3ckVLNJmFcIOZxfXf3JneRzZ5tRZP5T+TxKZLNa3Obw=","password":"VucSe7y64D9I4Z+ypdz8LdcAGUnImdzWDmF0LNknKWCoI69+ahULOQnsCzKuFqsL40oekdFWVZKmBlNl0AMgiyQ6q6uV2M5LFQvsHB/zqzF+6/OxWn8PNUS3u6+3plFHKLzdUPVoKzhN4RNvfDaxsVDHSI+O9fLF8IXUfbK47xM="}}'
#response = requests.post('https://gateway.36kr.com/api/mus/login/byMobilePassword', cookies=cookies, headers=headers, data=data)
print(response.text)