本文由博主原創,轉載請註明出處:個人博客-知乎爬蟲之3:請求分析html
git爬蟲項目地址(關注和star在哪裏~~):https://github.com/MatrixSeven/ZhihuSpider (已經完結)mysql
附贈以前爬取的數據一份(mysql): 連接:https://github.com/MatrixSeven/ZhihuSpider/README.MD 只下載不點贊,不star,差評差評~藍瘦香菇)git
我們上一篇所長說了爬蟲的爬取大概思路:知乎爬蟲之2:爬蟲流程設計(附贈爬出的數據庫),這一篇幅就來研究分析下模擬登錄知乎.github
首先來講,網上模擬登錄知乎的文章已是多不勝數,並且模擬登錄知乎也比模擬登錄微博百度簡單不少,可是本着有始有終的原則,我們仍是重頭到尾的過上一遍.sql
恩,工具呢,就用我們本身平時用的瀏覽器就ok.牛逼閃閃的f12,就足夠用.而後在使用下Fiddler來查看下登錄狀態…數據庫
打開http://www.zhihu.com,點擊登錄,而後直接F12,調試出開發者工具,選擇NetWork,輸入帳號 密碼 和驗證碼,點擊登錄,發現右側出現了網絡請求.api
發現有個email的請求,請求信息爲:瀏覽器
請求地址:https://www.zhihu.com/login/email
請求方式:post
下面的內容先不去管它,直接拽到最下面:cookie
..發現有以下信息網絡
_xsrf:xxxxxxxxxxxxxxxxxx
password:xxxxx
captcha:HDMG
email:xxxxxx@xx.com
恩,就是Post一下,看看登錄時候成功,而且抓一下登錄失敗時的錯誤信息.
故意輸入錯誤郵箱 ,密碼
拿到以下結果:
1. 郵箱不存在:
2. 密碼錯誤:
那麼登錄成功是怎麼一種標識狀態呢?
我們這裏藉助下Fiddler
打開Fiddler,再次進項知乎登錄,而後找到 https://www.zhihu.com/login/email 這個請求.發現登錄成功後返回了一個Json串:
恩,那麼還有一個_xsrf,那麼這個參數在哪裏呢?
其實_xsrf這種東西,基本都存在於頁面的源碼裏,打開登錄頁面,右鍵查看查看源代碼,可發現:
哈哈,原來在一個隱藏域裏....
哈哈,這是否是故意就讓人爬的了...過程比我想象中的簡單不少..
可是具體行不行呢,還得上代碼試一試哈哈...
## 3.跟隨/關注分析
直接打開https://www.zhihu.com/people/Sweets07/followers,而後f12,開始分析請求.
直接滾動頁面,發現出現異步請求,請求地址爲:
https://www.zhihu.com/api/v4/members/Sweets07/followers?per_page=10&include=data%5B%2A%5D.employments%2Ccover_url%2Callow_message%2Canswer_count%2Carticles_count%2Cfavorite_count%2Cfollower_count%2Cgender%2Cis_followed%2Cmessage_thread_token%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=10&offset=30
可發現請求參數爲:
include:data[*].employments,cover_url,allow_message,answer_count,articles_count,favorite_count,follower_count,gender,is_followed,message_thread_token,is_following,badge[?(type=best_answerer)].topics
limit:10
offset:30
返回的Json爲:
哇塞.裏面有各類信息...
如:
1. 下一個請求的地址
2. 人員信息,id啊,頭像啊,學校,公司,簽名啊,關注人數.....
恩,其實我們拿一部分就夠了,對,就是那個ID...有的id就能夠直接打開我的頁面了..而後說這個請求有些問題,由於直接帶着cookie get會出現一個錯誤:
{"message":"身份未通過驗證","code":100,"name":"AuthenticationException"}
這個是由於在請求的時候多了一個頭:
那麼這個參數在哪裏呢??
找來找去,最後發現,這個參數在請求我的主頁信息的cookie裏.
跟隨者和關注者差很少.....
就到這裏吧,下一步開始擼代碼...
//吾愛Java(QQ羣):170936712(點擊加入)