今曰油條下拉滾動新聞,url有個_signature,cookies里也有2個加密參數,先不管,
WX20220623-183043@2x.png
看看_signature怎么來的
WX20220623-183705@2x.png
i就是_signature, 每次結果都不一樣,不要在意細節,看著像就行
WX20220623-184323@2x.png
繼續走,到這里,return 有點長,console看看結果
WX20220623-184436@2x.png
WX20220623-184931@2x.png
就是這個K(b, e, f, a, d, c, n, i) 了,進去看看:
WX20220623-185032@2x.png
這一串還是很長,console看看,找到了
WX20220623-185314@2x.png
WX20220623-185612@2x.png
各種嵌套,硬鋼不行了,就用pyexecjs調用吧(記得安裝nodjs),把acrawler.js全選復制,保存成jrtt.js:
// 把一些瀏覽器環境補上
window = global;
document = {referrer : 'https://www.toutiao.com/'};
location = {
href : 'https://www.toutiao.com/?wid=1635125685888',
protocol: 'https:',
};
navigator = {
userAgent:'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36',
};
~~這里是你復制的acrawler.js代碼600多行...
// js調用
function get_signature(url){
return window.byted_acrawler.sign({url:url})
}
然后是python調用代碼:
import execjs
def get_signature():
'''解密signature參數'''
with open('jrtt.js', encoding='utf-8')as f:
jscode = f.read()
url='https://www.toutiao.com/api/pc/list/feed?channel_id=3189398996&min_behot_time=0&refresh_count=1&category=pc_profile_channel'
signature = execjs.compile(jscode).call('get_signature',url)
print(signature)
return signature
signature=get_signature()
運行一下,啊,結果這么短呢:
WX20220623-190923@2x.png
也可以的,這個參數有時效,短時間可以用同一個
WX20220623-191120@2x.png
感謝大佬指點: 之呼 [南枝向暖北枝寒]