HttpClient 模擬登陸知乎

2022-01-30 05:17:45 字數 3728 閱讀 6463

最近做爬蟲相關工作,我們平時用httpwebrequest比較多,每乙個url都要建立乙個httpwebrequest例項,

而且有些**驗證比較複雜,在登陸及後續抓取資料的時候,每次請求需要把上次的cookie傳遞給這次請求。

記得這篇部落格(結尾,dudu總結了:

httpclient最與眾不同的地方是同乙個httpclient例項可以發出多次請求,每次請求是可以是完全不同的url。

而乙個httpwebrequest例項對應於乙個url的一次請求。這才是httpclient與httpwebrequest的最大區別所在。

那麼為什麼不用httpclient呢?

本著學習的目的,那我就拿知乎練習一下,看看httpclient好用否?

1,分析登陸頁:

根據上圖設定 defaultrequestheaders

//1.首頁

var response = await

h.getasync(index);

string content = await

response.content.readasstringasync();

if(response.issuccessstatuscode)

else

2,分析登陸頁:我這裡是手機和密碼登入):

分析:除了要設定defaultrequestheaders,還需獲取_xsrf的值,

//

2.登陸

//post引數

}

3. 登入成功後,後面就由大家隨便折騰了。這裡獲取登陸後的首頁資訊吧。

//

3.抓取首頁

h.defaultrequestheaders.clear();

h.defaultrequestheaders.add(

"useragent

", configs.chromeagent);

h.defaultrequestheaders.add(

"accept-language

", "

zh-cn,zh;q=0.8,en-us;q=0.6,en;q=0.4");

h.defaultrequestheaders.add(

"accept-encoding

", "

gzip, deflate, sdch");

h.defaultrequestheaders.add(

"accept

", "");

response = await

h.getasync(index);

content = await response.content.readasstringasync();

4,我也不對資料做處理了,看看結果:

上圖是除錯狀態下的視覺化工具檢視。

複雜的無法識別的驗證碼就只能用打碼兔了,其實也可以自己寫個類似打碼兔的軟體,但需要有人值守,人工識別驗證碼。

這這麼點東西,昨晚花費了3小時(9-12),今早寫部落格又花費了1小時。

httpclient模擬登陸微博問題

我用httpclient模擬登陸微博報如下錯誤 debug requestaddcookies cookie version 0 name usrhawb value usrmdins212 186 domain weibo.com path expiry null match weibo.com ...

Mac模擬登陸知乎

10001 請求引數異常,請公升級客戶端後重試 mac 在terminal 先其中乙個終端,不要關閉 之後在python檔案中正常編寫 先來乙個測試檔案 coding utf 8 from selenium import webdriver from selenium.webdriver.chrom...

python模擬登陸知乎

恢復內容開始 在完成前面的階段的任務之後,我們現在已經能夠嘗試著去模擬登入一些 了。在這裡我們模擬登入一下知乎做一下實驗。筆者在這裡總共用了三天多的時間,下面給大家分享一下筆者是怎麼一步一步的模擬登入成功的。也希望大家能夠吸取我的教訓。初步的模擬登入 下面這段 是筆者最初寫的,我們慢慢來看 impo...