Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 网站刮板到下一个层次_C#_Security_Httpwebrequest_Webbrowser Control - Fatal编程技术网

C# 网站刮板到下一个层次

C# 网站刮板到下一个层次,c#,security,httpwebrequest,webbrowser-control,C#,Security,Httpwebrequest,Webbrowser Control,所以 对于我运行的粉丝网站,我还运行一个网站刮板(/xmleader),它可以从游戏的安全网站位置读取信息。它现在运行得很好,但我想让它更好,主要是更快 我面临的第一个问题是如何维护一个会话,在这个会话中,您可以在维护登录的同时执行大量请求(比如每30秒1到10次)。正常的httprequest并没有真正起作用,因为登录是由一个令牌保护的,该令牌必须与我的登录信息一起提交。现在,解决方案如下:在表单上放置一个webbrowser控件,当登录页面加载(documentCompleted事件)时,我

所以

对于我运行的粉丝网站,我还运行一个网站刮板(/xmleader),它可以从游戏的安全网站位置读取信息。它现在运行得很好,但我想让它更好,主要是更快

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

现在,我可以访问我想要的所有安全页面,但不能使用代码中的HttpWebRequest。但当我在同一张表单上放置多个WebBrowser控件时,所有控件都可以访问站点的安全部分。这就是我如何放置其中6个来执行类似于并行请求(xml和html)的操作,以快速访问我帐户中的信息

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

那我该怎么做呢?这是可能的,还是我应该完全不同地对待它


(ps我用C#写所有东西)

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

在第一次登录时只显示WebBrowser应该会大大提高您的性能!
只注意浏览器验证/异步内容加载。

您不能使用
HttpWebRequests
WebBrowser
共享同一会话。您需要使用基于or的API,这是
WebBrowser
在幕后使用的

我在这里列出了一些选项:


COM对象可能是最可行的对象。

好好使用,发生的逻辑远远不止是撕扯。该应用程序还与我的网站数据库连接,以便基本上让我网站上的其他用户查看我的帐户,并通过该程序自动与之交互。所以仅仅翻录还不够。VisualWebRipper有一个API,这样你就可以将它与你的应用程序集成。虽然我不知道它是否能满足你的所有要求,但是看起来你所做的更多的是一个浏览器而不是翻录,也许可以编写你的自定义webrequest?这可能因为很多原因不起作用。会话不仅通过cookies识别,还有其他独特的功能。事实上,我用了这个:它就像一个符咒@ovanwijk,如果这对您有效的话,那就太棒了,但这完全取决于特定的服务器,它显然忽略了其他唯一的头,比如
User-Agent
。如果服务器支持
授权
,它肯定不起作用。