簡體   English   中英

http-conduit瀏覽器的使用

[英]http-conduit browser usage

我正在嘗試使用HTTPS從站點抓取數據。 我設法成功使用Network.HTTP.Conduit發出了基本請求(發布憑據等),但是未能從響應頭(Set-Cookie)中提取cookie信息。 看起來http-conduit擁有自己的 cookie處理機制 ,我無法理解。

Network.HTTP.Conduit.Browser似乎可以自動處理Cookie(這對我來說很好),但是由於缺少文檔 ,我無法使它正常工作。

可以讓有更多使用http-conduit瀏覽器模塊經驗的人向我展示如何:

  1. 處理自簽名證書(我通過基本模塊中的managerCheckCerts做到了這一點)
  2. 發送主體中帶有URL編碼參數的POST請求,而不進行任何重定向( 為此 ,我使用了基本模塊中的urlEncodedBody
  3. 在簡單的GET請求中使用步驟2中的cookie並將響應作為(惰性)ByteString讀取(為此我將使用httpLbs

在我看來,與Network.HTTP.Conduit相比,Network.HTTP.Conduit.Browser的抽象級別更適合我的應用程序,因此即使我可以使用后者手動處理Cookie,我也要進行切換。

我從來沒有使用過瀏覽器,但是我曾經使用過http-conduit。 我閱讀了源代碼來回答這些問題,如果出錯,我深表歉意。

  1. 做同樣的事情。 使用正確的managerCheckCerts創建Manager ,將其傳遞給browse :: Manager -> BrowserAction a -> ResourceT IO a

  2. makeRequest :: Request IO -> BrowserAction (Response (Source IO BS.ByteString))接受一個Request IO 像以前一樣使用urlEncodedBody創建一個在正文中帶有參數的POST請求,並將其傳遞給makeRequest 我相信將redirectCount設置為0以禁用重定向。

  3. 我相信您只需要使用getCookieJar :: BrowserAction CookieJar ; BrowserAction來自getBrowserState :: BrowserAction BrowserState

http-conduit在瀏覽器模塊之外管理cookie的方式不是。 Cookie在HTTP響應中返回; 您可以做的是解析響應,並將Cookie存儲在Cookie罐中。 實際上這就是瀏覽器的全部功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM