Python爬虫:爬取instagram,破解js加密参数
Python爬蟲:爬取instagram,破解js加密參數
instagram 是國外非常流行的一款社交網站,類似的還有像facebook、twitter,這些社交網站對于掌握時事熱點、電商數據來源和競爭對手的動態信息的把我都是很有數據價值的,所以值錢的數據誰都想獲取,那就意味著誰都想保護,那么下面就來聊一聊怎么爬取ins的信息。
一、需求分析:
爬取instagram這個用戶的圖片、評論數、點贊數、文章內容,存為Json格式
二、站點分析:
首先自行準備翻墻工具,準備好以后,打開instagram官方賬號,同時按下F12,如下所示:
切換到network選項,隨便選擇一張圖片的url,全局搜索,如下圖:
可以發現:instagram把數據寫到了script標簽里面,這是一種常見的做法,放到js里面去加載,所以我們需要用到正則表達式去做匹配:
解釋一下:首先爬取首頁的數據,然后正則表達式匹配script標簽傳來的后臺數據,轉換成json格式,同時還需要找出user_id和GIS_rhx_gis參數(破解js加密需要用到),最后解析數據。
爬取完首頁以后,我們就要爬取下一頁的數據了,可以發現下一頁的數據是ajax異步加載的方式,返回的是json格式的數據,如下圖:
請求的url格式為:
"https://www.instagram.com/graphql/query/?query_hash=5b0222df65d7f6659c9b82246780caa7&variables=%7B\"id\"%3A\"{id}\"%2C\"first\"%3A12%2C\"after\"%3A\"{end_cursor}\"%7D"
復制代碼
經過我測試,發現必須要帶上 x-instagram-gis這個參數,否則會報 403 forbideen錯誤,這是ins的反爬蟲機制:
那么如何生成這個參數呢?全局搜索,找到這個參數的js文件,復制一份拷貝到本地,我用的是Pycharm,一路追蹤過去,可以找到生成這個參數的方法,我總結為:
1. 從用戶首頁https://www.instagram.com/instagram/獲取user_id、rhx_gis、end_cursor參數
2. variables = '{"id":"' + id + '","first":12,"after":"' + end_cursor + '"}',對 params = rhx_gis + ":" + variables進行md5加密
3. headers加入"x-instagram-gis": params,即可進行抓取
復制代碼
生成這個參數以后,我們就可以下一頁的抓取了~
三、源碼:
github.com/Mrrrrr10/In…
總結
以上是生活随笔為你收集整理的Python爬虫:爬取instagram,破解js加密参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些书评网站
- 下一篇: L-BFGS算法/Broyden族/BF