該文章主要提供交流學(xué)習(xí)使用镇饺,請勿利用其進(jìn)行不當(dāng)行為乎莉!
如本篇文章侵犯了貴公司的隱私,請聯(lián)系我立刻刪除奸笤!
由于最近比較忙惋啃,暫時(shí)沒有更新,這段時(shí)間會及時(shí)更新的
現(xiàn)如今自媒體風(fēng)聲水起监右,很多人現(xiàn)在都在從事著自媒體行業(yè)边灭,游戲宣傳,影視宣傳健盒,等等存筏,都在以文章形式傳播。
那今天分享一下今日頭條的是哪個參數(shù)的生成思路味榛,以今日頭條推薦為例椭坚,我們進(jìn)行抓包調(diào)試。
首先清楚我們要的加密參數(shù)名為:signature 然后全局搜索:
接下來咱們通過CTRL+F快捷鍵進(jìn)行全局搜索signature參數(shù):
我們可以看到搏色,在搜索結(jié)果中有一個js加密文件:lib_xxx.js 善茎,我們通過網(wǎng)站目錄打開它
接下來依次點(diǎn)擊上方的Sources打開網(wǎng)站目錄,從左側(cè)欄依次點(diǎn)擊频轿,找到lib_xxx.js文件垂涯,打開后的js文件可讀性極差烁焙,需要點(diǎn)擊下方格式化按鈕{ } 。
# 完整python調(diào)用代碼
import time
import execjs
import asyncio
from pyppeteer import launch
from urllib.parse import quote
def get_js():
f = open("sign.js", 'r', encoding='utf-8') # 打開JS文件
htmlstr = f.read()
return htmlstr
def get_des_psswd(e, c):
js_str = get_js()
ctx = execjs.compile(js_str) # 加載JS文件
return (ctx.call('get_page', e[0], c)) # 調(diào)用js方法 第一個參數(shù)是JS的方法名耕赘,后面的e和c是js方法的參數(shù)
async def main(key):
browser = await launch(
# headless=False
) # 將headless參數(shù)設(shè)為False骄蝇,則變成有頭模式
page = await browser.newPage()
# 設(shè)置頁面視圖大小
await page.setViewport(viewport={'width': 1280, 'height': 800})
# 是否啟用JS,enabled設(shè)為False操骡,則無渲染效果
await page.setJavaScriptEnabled(enabled=True)
await page.goto('https://www.toutiao.com/search/?keyword={}'.format(quote(key)))
itmes = await page.cookies()
cookie = ''
for itme in itmes:
name = itme['name']
value = itme['value']
cookie = cookie + name + '=' + value + ';'
# 關(guān)閉瀏覽器
await browser.close()
return cookie[:-1]
def get_cookie(key):
print('正在獲取cookie...')
return asyncio.get_event_loop().run_until_complete(main(key))
if __name__ == '__main__':
key = '搜索關(guān)鍵字'
cookie = get_cookie(key)
url = [
'https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword={}&autoloa'
'd=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis×tamp={}'.format(quote(key),time.time())
]
url.append(get_des_psswd(e=url, c=cookie)) # 生成signature
iurl = '&_signature='.join(url) # 合成帶sign的api接口
print('api_url:', url[1]) # 完整的api接口
print('signature:', iurl) # signature加密串
print('cookie:', cookie) # 模擬用戶cookie