該文章主要提供交流學習使用,請勿利用其進行不當行為!
如本篇文章侵犯了貴公司的隱私,請聯(lián)系我立刻刪除!
由于最近比較忙,暫時沒有更新,這段時間會及時更新的
現(xiàn)如今自媒體風聲水起,很多人現(xiàn)在都在從事著自媒體行業(yè),游戲宣傳,影視宣傳,等等,都在以文章形式傳播。
那今天分享一下今日頭條的是哪個參數(shù)的生成思路,以今日頭條推薦為例,我們進行抓包調試。

首先清楚我們要的加密參數(shù)名為:signature 然后全局搜索:

接下來咱們通過CTRL+F快捷鍵進行全局搜索signature參數(shù):

我們可以看到,在搜索結果中有一個js加密文件:lib_xxx.js ,我們通過網(wǎng)站目錄打開它

接下來依次點擊上方的Sources打開網(wǎng)站目錄,從左側欄依次點擊,找到lib_xxx.js文件,打開后的js文件可讀性極差,需要點擊下方格式化按鈕{ } 。
# 完整python調用代碼
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)) # 調用js方法 第一個參數(shù)是JS的方法名,后面的e和c是js方法的參數(shù)
async def main(key):
browser = await launch(
# headless=False
) # 將headless參數(shù)設為False,則變成有頭模式
page = await browser.newPage()
# 設置頁面視圖大小
await page.setViewport(viewport={'width': 1280, 'height': 800})
# 是否啟用JS,enabled設為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 + ';'
# 關閉瀏覽器
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 = '搜索關鍵字'
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