haskell – http-conduit浏览器用法

我正在尝试使用HTTPS从网站上抓取数据.我成功地使用Network.HTTP.Conduit发布基本请求(发布凭据等),但是无法从响应头(Set-Cookie)中提取cookie信息.看起来像http-conduit有 own mechanism用于处理cookie,我无法理解.

Network.HTTP.Conduit.Browser似乎自动处理cookie(我很好),但由于缺少documentation,我无法使用它.

有经验处理http-conduit浏览器模块的人可以告诉我如何:

>处理自签名证书(我设法在基础模块中使用managerCheckCerts执行此操作)
>在正文中发送带有URL编码参数的POST请求,而不是遵循任何重定向(我从基础模块使用了urlEncodedBody)
>使用简单GET请求中的2.步骤中的cookie并将响应读作(懒惰)ByteString(我本来会使用httpLbs)

对我来说,看起来Network.HTTP.Conduit.Browser的抽象级别比Network.HTTP.Conduit更适合我的应用程序,所以即使我可以使用后者手动处理cookie,我也想进行切换.

我从未使用过Browser,但我使用过http-conduit.我阅读了源代码来回答这些问题,如果我犯了任何错误,我会道歉.

>做同样的事情.当您使用正确的managerCheckCerts创建Manager时,将其传递给browse :: Manager – > BrowserAction a – > ResourceT IO a.
> makeRequest :: Request IO – > BrowserAction(响应(源IO BS.ByteString))接受请求IO;像以前一样使用urlEncodedBody在主体中创建带有参数的POST请求,并将其传递给makeRequest.我相信将redirectCount设置为0可以禁用重定向.
>我相信你只需要使用getCookieJar :: BrowserAction CookieJar; BrowserAction来自getBrowserState :: BrowserAction BrowserState.

http-conduit管理浏览器模块之外的cookie的方式是它没有. Cookie在HTTP响应中返回;你可以做的是解析响应并将cookie存储在cookie罐中.这实际上是所有浏览器真正做到的.

相关文章
相关标签/搜索