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 環境很複雜,只能做到...