模擬請求 模擬header gzip解壓 泛型

2022-03-12 11:00:09 字數 2114 閱讀 4335

webclient

headerdata是自定義類物件,儲存header資訊

private static t getdatacommonmethod(string url, string host, headerdata headerdata) where t : class

" + "\n" +

"user-agent: ......" + "\n" +

"accept-encoding: gzip, deflate" + "\n" +

"accept-language: zh-cn" + "\n" +

$"cookie: m=; u=; wx=; ......" + "\n";

var rawheaders = headerstr.split(new , stringsplitoptions.removeemptyentries).tolist();

var headerpairs = rawheaders.select(x =>

, 2, stringsplitoptions.removeemptyentries);

var key = items[0].trim();

var value = items[1].trim();

//valuetuple是c# 7中的語法,.net framework框架在4.7以上自帶

return new valuetuple(key, value);

}).tolist();

headerpairs.foreach(x =>

);//先gzip解壓再轉string

byte rawbytes = client.downloaddata(url);

var stream = new memorystream(rawbytes);

gzipstream g = new gzipstream(stream, compressionmode.decompress);

//gzip最後四位是原始長度

var length = bitconverter.toint32(rawbytes, rawbytes.length - 4);

byte bytes = new byte[length];

g.read(bytes, 0, bytes.length);

//編碼是utf8

//usecookies:處理程式是否使用 cookiecontainer 屬性來儲存伺服器cookie 並在傳送請求時使用這些 cookie

); //此處確定請求方式(post)

//新增cookie資訊

message.headers.add("cookie", yourtext);

message.content = formcontent;

//使用sendasync方法,把請求傳進去httprequestmessage

var result = await client.sendasync(message);

strcontent = await result.content.readasstringasync();

var retobj = jsonconvert.deserializeobject(strcontent);

}

注意事項

1.不能帶

connection: keep-alive

爬蟲 模擬請求

我們將要爬取人民網某些新聞中的資料,那我們該如何實現呢?首先我們先實現第一步 根據url,模擬url請求,根據url獲取網頁中的內容。設定全域性的標準cookie策略 requestconfig config requestconfig.custom setcookiespec cookiespec...

curl 模擬請求

感覺挺不錯的 模擬請求方法 直接上 curl setopt ci,curlopt customrequest,method 設定請求方式 curl setopt ci,curlopt header,true 啟用時會將標頭檔案的資訊作為資料流輸出 curl setopt ci,curlopt fol...

C 模擬 Http 請求

1.支援 gzip 和 deflate 壓縮方式的響應資訊 2.post 可擴充套件提交檔案 3.可設定 未測試過 4.自動判斷響應內容的字符集 簡單判斷,真實情況很複雜,有些無字符集描述的,或者 response.charset 是 iso 頁面是 utf 8 輸出是 gbk 環境很複雜,只能做到...