目錄
前言
分析(x0 整體思路分析)
分析(x1 好友資料的獲取)
準備作業
使用到的模塊
模塊的安裝
插件的安裝
分析(x0)
分析(x2)
分析(x3)
代碼
分析(x3 獲取屏蔽的好友)
前言
大家好,我叫善念,此篇文章為盲寫,何為盲寫呢.......就是我也沒做任何準備,自己也沒有做過這個實戰,但是我心里肯定已經是有思路了的,
很多人學習python,不知道從何學起, 很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手, 很多已經做案例的人,卻不知道如何去學習更加高深的知識, 那么針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼! QQ群:861355058 歡迎加入,一起討論 一起學習!
其實這樣子的話對讀者未必就一定是壞的,因為我沒做過的話,那么在寫文章的時候分析程序肯定是特別清晰的,而咱們學習的是案例嗎?不是,記住你學習的一定是分析的方法,
分析(x0 整體思路分析)
想一下思路吧,當我們進入一些好友的空間的時候你會發現有些是可以直接進入的,而有些卻是這樣的:(翻了幾十個好友可算找到個不讓我訪問的了......)
?
那么也就是說我只需要獲取到所有的好友號碼,然后get請求看回傳的文本中是否有主人設定了權限,您可通過以下方式訪問這些關鍵字就可以了,
可以看到這個get的請求有點長,后面一串咱們都看不懂是什么,那么我們洗掉它們看看能否正常訪問:
?
結果顯示是一樣的,其實這個就是叫做引數冗余,比如咱們搜一個百度
?
可以看到除了咱們得關鍵字123外,還有很多其他的引數,那么如果我們洗掉這些引數呢?
?
結果顯示一致,這就叫引數冗余(多余),那么剩下的就是看咱們如何獲取到自己的所有好友啦!
分析(x1 好友資料的獲取)
關于好友的介面資料有很多阿.....群官網,空間官網都是可以獲取的,由于我寫過一篇Python采集群人員資料,記錄JavaScript逆向分析程序 文章中寫過如何獲取群資料,其實這個介面同樣可以獲取到好友資料,所以的話我下面就用群官網的介面啦!
準備作業
使用到的模塊
from selenium import webdriver
import json
import requests
import execjs
import jsonpath
模塊的安裝
主要利用到這五個模塊,其中json為內置模塊,其它均為第三方模塊,安裝方式如下所示:
pip install selenium
pip install requests
pip install PyExecjs
pip install jsonpath
插件的安裝
關于selenium這個模塊,咱們來重點介紹一下:
Selenium是一個用于Web應用程式測驗的工具,Selenium測驗直接運行在瀏覽器中,就像真正的用戶在操作一樣,
如果不能夠理解我就講點白話,如果你是web開發人員,開發好了幾百個網站,那么如果你認為的去一個個的測驗BUG,是不是很浪費時間?而selenium這個框架就是用來模擬人去自動化操控瀏覽器的,那么是不是就節約了很多時間呢,
既然selenium能夠操控瀏覽器,那么它們之間必須要有一個橋梁,總不能無中生有吧?
那么操控的瀏覽器款式不一樣,中間的橋梁也是不一樣的,比如我更喜歡用chrome瀏覽器,那么咱們需要下載一個selenium與Chrome的橋梁——Chromedriver插件
下載地址
?
下載與你當前谷歌瀏覽器版本最相近的Chromedriver
?
那么像我的話,下載
? 即可,
Windows系統需下載32位,其它的自己看著辦,點進去下載win32即可,
?
那么如何讓Python與selenium連接起來呢,這里咱們需要配置一個環境變數,就是把Python與selenium處于同一個目錄:
?
到此為止,咱們的環境就搭建好了,
分析(x0)
進入咱們的目標網站:目標網站
?
點擊登錄后點擊群管理:
?
再點擊成員管理,進入咱們的資料頁面:
?
在這里大家就很好奇了,為什么我要獲取好友資料,跑到群資料里來呢?
在這個時候,咱們打開瀏覽器的開發者工具,點擊成員管理
?
你會發現你抓到兩個特別的包,一個是獲取群資料串列,一個是獲取好友串列,在這里我就不看群資料了,想看的自己去看我前面寫過的文章即可,
?
post請求,引數為bkn為變化的值,回傳的資料為:
?
可以看到回傳的result中有四個分組,其實就是我好友的四個分組...里面的資料如何提取出來呢?那是不是咱們先需要把前面的bkn引數搞定呀!當然你可以把bkn寫死,把cookies也寫死,一樣可以post得到資料,但是每次都要去抓包復制顯得你很low,
分析(x2)
走吧,開始去分析咱們的bkn是如何生成的:
?
上次有人問我,這個玩意該怎么搜...我這里告訴你們了,先點一下那三個點,然后點擊search:
可以看到就一個JS檔案中包含bkn,簡直完美了,事情變得越來越簡單,
?
請不要遇到JavaScript加密就鬧心,靜下心來好好看看
o.data.bkn
o字典里面的data里面的bkn就是個嵌套而已,也就是說明bkn屬于o字典里面的一個鍵,然后它居然賦值給了一個函式function,注意看結尾用了一個()啥意思?
把把函式賦值給一個變數bkn,然后呼叫該函式,說明什么?bkn就為函式中return的值呀......是不是很簡單?看不懂多看幾遍,
函式里面的話就是個回圈咯,當條件不滿足時就一直加,知道條件滿足為止,看不懂可以去學學基本的JavaScript語法,不學也問題不大,咱們直接摳JavaScript代碼也行,
for (var e = $.cookie("skey"), t = 5381, n = 0, o = e.length; n < o; ++n)
t += (t << 5) + e.charAt(n).charCodeAt();
return 2147483647 & t
e為cookie中"skey"鍵所對應的值,o為e這個字串的長度,n起始值為0.....居然都是已知資料,壓根沒有變數,那么咱們看看skey對應的值是啥:
?
好像問題是已經解決了吧,那么咱們來測驗一下:
?
看下與咱們的post引數是否相同:
?
emmmmm,大功告成拉!
分析(x3)
總結下思路:
1.利用selenium打開瀏覽器然后登錄
2.獲取cookies保存(后期用來解密bkn的)
3.解密JavaScript
4.發送post請求想要采集的好友資料
代碼
JS代碼:
function GetBkn(e) {
for (t = 5381, n = 0, o = e.length; n < o; ++n) t += (t << 5) + e.charAt(n).charCodeAt();
return 2147483647 & t
}
Python代碼:
在這里我就不貼出來了,可以看我以前的那篇文章,然后自己修改修改就可以了,讓你們自己動手,加強你們的動手能力,
分析(x3 獲取屏蔽的好友)
最后這一步就是一個單純的for回圈get請求啦
?
記得帶上cookies喲,咱們前面selenium登陸獲取好友資料的那個cookies與這個是通用的!然后看下回傳值
?以此進行是否被屏蔽的判斷就可以了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/346868.html
標籤:Python
