爬蟲之爬取B站視頻及破解知乎登錄方法(進階)


今日內容概要

  • 爬蟲思路之破解知乎登錄
  • 爬蟲思路之破解紅薯網小說
  • 爬取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&timestamp=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&timestamp=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一開始就需要保存 后續做激活


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM