當前位置:首頁 » 健康資訊 » 抓包可以干什麼知乎
擴展閱讀
27瓦電可以用多長時間 2025-01-21 06:42:05

抓包可以干什麼知乎

發布時間: 2025-01-21 04:04:31

Ⅰ Python爬取知乎與我所理解的爬蟲與反爬蟲

關於知乎驗證碼登陸的問題,用到了Python上一個重要的圖片處理庫PIL,如果不行,就把圖片存到本地,手動輸入。

通過對知乎登陸是的抓包,可以發現登陸知乎,需要post三個參數,一個是賬號,一個是密碼,一個是xrsf。
這個xrsf隱藏在表單裡面,每次登陸的時候,應該是伺服器隨機產生一個字元串。所有,要模擬登陸的時候,必須要拿到xrsf。

用chrome (或者火狐 httpfox 抓包分析)的結果:

所以,必須要拿到xsrf的數值,注意這是一個動態變化的參數,每次都不一樣。

拿到xsrf,下面就可以模擬登陸了。
使用requests庫的session對象,建立一個會話的好處是,可以把同一個用戶的不同請求聯系起來,直到會話結束都會自動處理cookies。

注意:cookies 是當前目錄的一個文件,這個文件保存了知乎的cookie,如果是第一個登陸,那麼當然是沒有這個文件的,不能通過cookie文件來登陸。必須要輸入密碼。

這是登陸的函數,通過login函數來登陸,post 自己的賬號,密碼和xrsf 到知乎登陸認證的頁面上去,然後得到cookie,將cookie保存到當前目錄下的文件裡面。下次登陸的時候,直接讀取這個cookie文件。

這是cookie文件的內容

以下是源碼:

運行結果:

https://github.com/zhaozhengcoder/Spider/tree/master/spider_hu

反爬蟲最基本的策略:

爬蟲策略:
這兩個都是在http協議的報文段的檢查,同樣爬蟲端可以很方便的設置這些欄位的值,來欺騙伺服器。

反爬蟲進階策略:
1.像知乎一樣,在登錄的表單裡面放入一個隱藏欄位,裡面會有一個隨機數,每次都不一樣,這樣除非你的爬蟲腳本能夠解析這個隨機數,否則下次爬的時候就不行了。
2.記錄訪問的和明ip,統計訪問次數,如果次數太高,可以認為這個ip有問題。

爬蟲進階策略:
1.像這篇文章提到的,爬蟲也可以先解析一下隱藏欄位的值,然後再進行模擬登錄。
2.爬蟲可以使用ip代理池的方式,來避免被發現。同時,也可以爬一會休息一會的方式來降低頻率。另外,伺服器根據ip訪問次數來進行反爬,再ipv6沒有全面普及的時代,這個策略會很容易造成誤傷。(這個是我個人叢賣的理解)。

通過Cookie限制進行反爬蟲滲棚逗:
和Headers校驗的反爬蟲機制類似,當用戶向目標網站發送請求時,會再請求數據中攜帶Cookie,網站通過校驗請求信息是否存在Cookie,以及校驗Cookie的值來判定發起訪問請求的到底是真實的用戶還是爬蟲,第一次打開網頁會生成一個隨機cookie,如果再次打開網頁這個Cookie不存在,那麼再次設置,第三次打開仍然不存在,這就非常有可能是爬蟲在工作了。

反爬蟲進進階策略:
1.數據投毒,伺服器在自己的頁面上放置很多隱藏的url,這些url存在於html文件文件裡面,但是通過css或者js使他們不會被顯示在用戶看到的頁面上面。(確保用戶點擊不到)。那麼,爬蟲在爬取網頁的時候,很用可能取訪問這個url,伺服器可以100%的認為這是爬蟲乾的,然後可以返回給他一些錯誤的數據,或者是拒絕響應。

爬蟲進進階策略:
1.各個網站雖然需要反爬蟲,但是不能夠把網路,谷歌這樣的搜索引擎的爬蟲給幹了(幹了的話,你的網站在網路都說搜不到!)。這樣爬蟲應該就可以冒充是網路的爬蟲去爬。(但是ip也許可能被識破,因為你的ip並不是網路的ip)

反爬蟲進進進階策略:
給個驗證碼,讓你輸入以後才能登錄,登錄之後,才能訪問。

爬蟲進進進階策略:
圖像識別,機器學習,識別驗證碼。不過這個應該比較難,或者說成本比較高。

參考資料:
廖雪峰的python教程
靜覓的python教程
requests庫官方文檔
segmentfault上面有一個人的關於知乎爬蟲的博客,找不到鏈接了

Ⅱ 一步一步教你 https 抓包

在 Mac 上常用的抓包軟體是 Charles,網上關於 Charles 的教程很多,這里介紹另一個抓包神器 mitmproxy。mitmproxy 是一款可互動式的命令行抓包工具,它除了可以抓包查看 http/https 請求,還有一個很強大的功能是攔截並修改 request 或者 response,後面我會用實際例子演示如何修改知乎的回答:)

mitmproxy 官網 介紹了用以下命令來安裝

我在實際安裝過程中遇到了一些坑,首先是 OSX El Capitan 及以上的系統版本在安裝時會出現 six 模塊依賴錯誤,具體可以看 這兒 的討論。還有一個問題是安裝過程中會出現許可權錯誤,需要以 root 許可權執行。最後用以下命令成功安裝,安裝不了需要翻一下牆

首先需要配置一下網路環境,將手機和電腦連在同一個 wifi 環境下,然後進入手機的 設置 - 無線區域網,點擊當前連接的 wifi 進入詳情設置頁面,在 http 代理那一欄輸入當前連接的 ip 地址,埠填8080,這個 ip 地址可以在電腦上的 系統偏好 - 網路 里查看,配置完成如下圖,

網路環境配置完成後我們可以開始實際的抓包了,只需在電腦上打開終端(命令行操作窗口),然後輸入 mitmproxy -p 8080 ,如果你看到如下頁面說明你已成功進入抓包模式,邁出了第一步,cheer~

接下去你可以用手機打開一些 App,不出意外你能看到一些 http 請求的列表。這時候我們還無法抓到 https 的包,還需要做一些額外配置。

下面的操作是針對 iPhone 手機,其他設備也類似。用 iPhone 打開 Safari 瀏覽器並輸入 mitm.it,這時你會看到如下頁面,

選擇對應平台並安裝證書,安裝完成後就可以抓 https 的包了, 官網上 解釋了這個工具是如何工作的

好了,到這里我們已經完成了所有的准備工作,接下去就和我一起實際體驗一下 https 的抓包過程吧。

這里以知乎為例,用手機打開知乎,我們應該能看到知乎的請求出現在列表裡了,類似下圖:

鍵盤上下移動,Enter 鍵進入查看詳情,按 Tab 鍵切換頂部導航欄,如下圖所示,

上面演示的是常規的操作,下面介紹一下 mitmproxy 的另一強大功能,攔截修改 request 和 response。

輸入 i ,然後輸入 ~s 再按回車鍵,這時候就進入了 response 攔截模式。如果輸入 ~q 則進入 request 的攔截模式,更多的命令可以輸入 ? 查看。攔截模式下的頁面顯示如下圖所示,

其中橘紅色的表示請求正被攔截,這時 Enter 進入後 再按 e 就可以修改 request 或者 response。修改時是用 vim 進行編輯的,修改完成後按 a 將請求放行,如果要放行所有請求輸入 A 即可。

下圖是我修改了某個答案的 response 請求將回答者的名字做了修改,因為只修改了 response 並不會影響其他的用戶顯示:)

上面提到的那些指令在輸入 ? 後都能查看到,如下圖,另外 官網 上也有很詳細的說明

我用上述方式嘗試了大多數的 App,包括淘寶、微博,都能抓到 https 的包,有些有加密,有些沒有加密。但是做了防中間人攻擊的設置,一啟用抓包模式就顯示網路錯誤1012,還是做的很不錯的,贊一個~

按照上面的過程操作就可以 https 抓包了,如果有遇到問題可以 聯系我 ,記得抓完後將手機 wifi 設置里的 http 代理關閉。開始實際體驗一下吧,enjoy~