【问题标题】:Website scraper to the next level网站爬虫更上一层楼
【发布时间】:2014-04-02 05:02:46
【问题描述】:

所以!

对于我运行的粉丝网站,我还运行了一个网站爬虫 (/xmleader),它从游戏的安全 Web 位置读取信息。它像现在一样完美地工作,但我想让它变得更好,主要是更快。

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

现在我可以访问所有我想访问的安全页面,但不能使用我放置在代码中的 HttpWebRequest。但是当我在同一个表单上放置多个 WebBrowserControls 时,它们都可以访问网站的安全部分。这就是我如何放置其中的 6 个来执行并行请求(针对 xml 和 html)以快速访问我帐户中的信息。

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

那么我该怎么做呢?这甚至可能吗,还是我应该完全不同地处理它?

(ps 我都是用 C# 写的)

【问题讨论】:

  • 好吧,除了翻录之外,还有更多的逻辑发生。该应用程序还连接到我的网站数据库,以便基本上让我网站上的其他用户查看我的帐户并通过该程序自动与之交互。所以只是翻录还不够。
  • visual web ripper 有一个 API,因此您可以将其与您的应用程序集成
  • 虽然我不知道它是否能满足你的所有要求,但看起来你在做的更像是一个浏览器而不是翻录,也许写你的自定义 webrequest?

标签: c# security httpwebrequest webbrowser-control


【解决方案1】:

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

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

【讨论】:

  • 这可能由于多种原因无法正常工作。会话不仅由cookies识别,还有其他唯一的fields
【解决方案2】:

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

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

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

【讨论】:

  • 实际上我使用了这个:ycouriel.blogspot.nl/2010/07/…,它就像一个魅力!
  • @ovanwijk,如果这对你有用,那就太棒了,但这完全取决于那个特定的服务器,它显然忽略了其他独特的标题,比如User-Agent。支持Authorization 的服务器肯定不行。
猜你喜欢
  • 1970-01-01
  • 2014-07-31
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
相关资源
最近更新 更多