最好的辦法是看網絡日誌,在這種情況下,它顯示了一個POST
上:
https://www.youtube.com/insight_ajax?action_get_statistics_and_data=1&v=$video_id
它發出了一個XSRF令牌在體內即在視頻的原始HTML體內可用https://www.youtube.com/watch?v=$video_id
網頁的JavaScript對象,如:
yt.setConfig({
'XSRF_TOKEN': "QUFFLUhqbnNvZUx4THR3eV80dHlacV9tRkRxc2NwSjlXQXxBQ3Jtc0ttd0JLWENnMjdYNE5IRWhibE9ZdDJTSk1aMktxTDR5d3JjSnkzVUtQWVcwdnp3X0tSOXEtM3hZdzVFdjNPeGpPRGtLVU5pVXV0SmtfdWJSUHNqTVg2WXBndjZpa3d6U25ja2FTelBBVWRlT0lZZkRDaDV6SU94VWE3cnpERHhWNVlUYWdyRjFqN1hvc0VLRmVwcEY3ZWdJMWgyUmc=",
'XSRF_FIELD_NAME': "session_token",
'XSRF_REDIRECT_TOKEN': "VlhMkn6F56dGGYcm4Rg7jCZR0vJ8MTQ5ODA1NzIwMkAxNDk3OTcwODAy"
});
它也需要在這同一個視頻頁面中設置一些餅乾。
以下bash腳本會:
- 請求視頻頁面
https://www.youtube.com/watch?v=$video_id
與curl
- 保存到一個名爲
cookie.txt
- 文件中的Cookie提取下面的請求被稱爲
session_token
的XSRF_TOKEN
與sed
- 請求視頻統計頁面
https://www.youtube.com/insight_ajax?action_get_statistics_and_data=1&v=$video_id
與curl
與餅乾預先viously存儲
- 解析XML結果提取
CDATA
部分與xml_grep
- 解析HTML與pup提取
bragbar-metric
類股利和轉換HTML結果與json{}
- 使用
jq
JSON解析器JSON提取text
場(它包含所得的視圖值,時間觀看,訂閱,股)
- 使用
sed
以除去Unicode字符
腳本:
video_id=CPkU0dF4JKo
session_token=$(curl -s -c cookie.txt "https://www.youtube.com/watch?v=$video_id" | \
sed -rn "s/.*'XSRF_TOKEN'\s*:\s*\"(.*)\".*/\1/p")
curl -s -b cookie.txt -d "session_token=$session_token" \
"https://www.youtube.com/insight_ajax?action_get_statistics_and_data=1&v=$video_id" | \
xml_grep --text_only 'html_content' | \
pup 'div table tr .bragbar-metric json{}' | \
jq -r '.[].text' | \
sed 's/\xc2\x91\|\xc2\x92\|\xc2\xa0\|\xe2\x80\x8e//'
它給出的意見數量,觀看時間,訂閱股份:
120862
454
18
213
問題,要求我們建議還是找一本書,工具,軟件庫,教程或其他關閉網站資源是堆棧溢出的主題,因爲它們傾向於吸引自以爲是的答案和垃圾郵件。相反,請描述問題以及到目前爲止解決問題所做的工作。 – DaImTo