网站刮板更上一层楼

时间:2014-04-01 13:02:40

标签: c# security httpwebrequest webbrowser-control

原来如此!

对于我运行的粉丝,我还运行了一个网站刮刀(/ xmleader),它从游戏的安全网站中读取信息。它现在完美无缺,但我想让它变得更好,主要是更快。

我遇到的第一个问题是如何维护会话,你可以在保持登录的同时执行大量请求(例如每30秒1到10次)。正常的httprequest并没有真正起作用,因为登录是通过必须与我的登录信息一起提交的令牌。现在解决方案如下:在Form上放置一个webbrowser控件,当加载登录页面时(documentCompleted事件),我填写文档中的登录信息并简单地提交它。

现在我可以访问我想要的所有安全页面,但不能使用放在代码中的HttpWebRequest。但是当我在同一个表单上放置多个WebBrowserControl时,他们都可以访问站点的安全部分。这就是我将其中的6个用于 - 并行请求(用于xml和html)以快速访问我帐户中的信息的方式。

这实际上就像一个魅力,你很好地看到7个浏览器浏览并分析domdocument但自然这会产生很多开销,因为我不需要加载图像和所有flash等(或导致的iFrames)非常恼人的多个documentLoaded事件)。所以我想登录一次并能够使用HttpWebRequest在代码内部请求webbrowser的会话/ cookie信息(或以其他方式登录)。

那我该怎么做?这甚至是可能的还是我应该以完全不同的方式处理它?<​​/ p>

(ps我用C#编写所有内容)

2 个答案:

答案 0 :(得分:1)

您可以显示第一个WebBrowser,登录,并在提交后,您从中获取Cookie并将它们全部附加到您的HttpWebRequests上。

首次登录时只显示WebBrowser可以提高您的性能! 只关注浏览器验证/异步内容加载。

答案 1 :(得分:0)

您无法使用HttpWebRequestsWebBrowser分享同一会话。您需要使用基于UrlMonWinInet的API,这就是WebBrowser在幕后使用的内容。

我在此列出了一些选项:https://stackoverflow.com/a/22686805/1768303

也许,XMLHTTPRequest COM对象是最可行的对象。