今日內容概要
- 爬蟲思路之破解知乎登錄
- 爬蟲思路之破解紅薯網小說
- 爬取b站視頻
- Xpath選擇器
- MongoDB數據庫
爬取b站視頻
"""
爬取大的視頻網站資源的時候,一般都需要下載一些第三方的功能模塊來幫助我們爬取
b站、抖音...
開源:全世界公開 免費使用的
如何快速格式化json格式數據
https://www.bejson.com/
研究每個視頻url的特點
https://www.bilibili.com/video/av73342471?p=1
https://www.bilibili.com/video/BV1nE411176d?p=2
https://www.bilibili.com/video/BV1nE411176d?p=3
https://www.bilibili.com/video/BV1nE411176d?p=4
"""
1.訪問視頻鏈接查看網頁源碼發現視頻的詳細信息就在js代碼中
<script>window.__playinfo__ = {...}</script>
# 真正表達式
<script>window.__playinfo__ = (.*?)</script>
2.需要一個整合的工具
ffmpeg
爬蟲思路之破解知乎登錄
1.知乎是必須登錄之后才能訪問網站資源的
2.發送登錄查找接口信息及請求體數據格式
Request URL: https://www.zhihu.com/api/v3/oauth/sign_in
3.請求體數據全部都是加密的
aR79k4U0cT2tXqYq8LPG6vHmxq2pkLnmtbSBDgg9kLtxgeSmhbfGiqX1jbfVoG398LF0gQN0cT2tuqYq8LkMQbwGivwOgUxGw9e0g4e8kCV92vgBzh3qk4R92LkYFhVGwqoVJbCGST2tECx9BLkBEJXmST2tXqYhZUS8eDC8FBtxg0Y080Y0kHU0r0txXqYhyhomogcMUuppkLPyMLtykQrqr7FXr8tyihYqk4R92LkYJwNm8CSMcrU0g72XUBN0B8F0Se9yb8xfnGFqY8tqciU82_tx6_xB1MY0NUe0gw2pk8t9BLfBkvwGUbOYDq3q8Ln8gcgZcUS_iD3ZpvS8Xg9hgqxOcvSMMTYhc4uyoMtxc_2q1RFqr6S0gRo9U9oMzcO1erU0g_xO-GoMBwxMXg9hguoLevwGXwNM3rU0gRtxguFqm0YBrAHqgg2f2Txy0qtq6A98S8Yfo8OBhq28Xg9hHgOGebOBtrS8
# 這里的請求體肯定是在前端用的js代碼加密(前端的邏輯代碼只能是js代碼)
4.知乎驗證碼校驗
https://www.zhihu.com/api/v3/oauth/captcha?lang=en
lang=en 驗證碼使用的是英文
lang=cn 驗證碼使用的是中文
第一次朝該地址發請求如果返回的結果{"show_captcha":true}那么就表示此次登錄需要驗證碼校驗
如果返回的結果{"show_captcha":false}那么此次登錄無需驗證碼
5.一般涉及到js加密都會出現一個關鍵字encrypt
全局搜索js文件中含有關鍵字的js代碼 一個個查找
直到找到return __g._encrypt()代碼
給該行代碼加斷點查看加密之前的數據格式
6.利用解析庫獲取數據
from urllib.parse import unquote_plus,
"""
unquote_plus 將密文轉明文
urlencoded 明文轉密文
"""
msg = '''
client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=%2B8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https%3A%2F%2Fwww.zhihu.com%2Fsignin%3Fnext%3D%252F
'''
print(unquote_plus(msg))
client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=+8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https://www.zhihu.com/signin?next=%2F
7.分析解析之后的數據參數
client_id 用戶id(固定值)
grant_type 驗證方式(固定值)
timestamp 時間戳*1000,去尾
source (固定值)
signature 簽名(js加密,變動)
username 用戶名
password 密碼
captcha 驗證碼
lang 驗證碼方式(固定值)
utm_source (固定值)
ref_source (固定值)other_https://www.zhihu.com/signin?next=%2F
8.加密數據里面還有一個加密項
signature(js動態加密)
全局搜索signature加密代碼得出一下結論
import hmac
from hashlib import sha1
9.請求體加密代碼執行
拷貝請求體加密的代碼然后編寫完整的破解代碼
pip install PyExecJS # 執行js代碼
10.登錄的cookie一開始就需要保存 后續做激活