這個主要是涉及Cookie加密,通過瀏覽器搜索不到相關的set-cookie字段,後面用抓包就能看到了。
請求這個數據必須要包含 yuanrenxue_cookie 這個加密cookie值。
主要是第一次請求了頁面返回了個js,這個js執行的cookie添加操作。
那麽我的思路是這樣的(python實現):
1.通過請求這個url,獲取js的内容
2.將這個js作爲一個參數,與 execjs 相結合,也就是在js中定義一個函數,接收js代碼,然後通過eval來執行,那麽就能正常解析出這個cookie值了。
3.進行數據請求。
import re
import execjs
import requests
sessionid = '你的id'
# 获取部分js代码
def get_js():
cookies = {
'sessionid': sessionid
}
res = requests.get('https://match.yuanrenxue.cn/match/13',cookies=cookies).text
jscode = str(re.findall("\('='\)\+(.*)\+';path=", res)[0])
return jscode
# JavaScript 代码
js_code = """
function get_cookies(jscode){
cookies = eval(jscode)
return cookies
}
"""
# 创建一个 JavaScript 上下文
ctx = execjs.compile(js_code)
jscode = get_js()
# 调用 JavaScript 函数
yuanrenxue_cookie = ctx.call("get_cookies", jscode)
cookies = {
'sessionid': sessionid,
'yuanrenxue_cookie': yuanrenxue_cookie
}
headers = {
'accept': 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'zh-TW,zh-CN;q=0.9,zh;q=0.8,ko;q=0.7,ja;q=0.6',
'cache-control': 'no-cache',
'pragma': 'no-cache',
'priority': 'u=0, i',
'referer': 'https://match.yuanrenxue.cn/match/13',
'sec-ch-ua': '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
}
u = []
sum = 0
for i in range(1, 6):
response = requests.get(f'https://match.yuanrenxue.cn/api/match/13?page={i}', cookies=cookies, headers=headers).json()
values = response['data']
u = u + values
for i in u:
value = i['value']
sum += value
print(sum)