我正在制作一个多线程[worker]应用程序。每个线程都应该拥有自己的非GUI WebBrowser,它可以导航到网页并将数据写入字段并单击按钮。我还需要每个WebBrowser拥有它自己的代理。我尝试了经典的Windows.Forms.WebBrowser,但我陷入了代理部分,因为它依赖于IE全局设置,这在我的情况下是行不通的。欢迎任何建议。
注意:我尝试通过HttpWebRequest / Response执行此操作,但它永远不会工作,因为要传递给页面的数据包含一个名为[ab_test_data]的字段,该字段从javascript代码获取其值,根据AB测试计算值我甚至都不完全明白。所以WebBrowser将是我最好的解决方案,除非有人能告诉我如何将计算ab_test_data的Javascript代码转换为C#代码。我试图访问的页面使用的算法非常复杂。
note2:ab_test_data值取决于无法在httpWebRequest / Response上模拟的Window.Event和Timestamp。
note3:我尝试过Gecko,但它不会让我对webPage做任何事情,除非GeckoWebBrowser被绘制在表单上(我不想要)。 欢迎任何解决方案。
编辑:如果你知道任何WebBrowser,我想用任何不同的语言(也许是Java),我想知道。
提前致谢。
答案 0 :(得分:6)
答案 1 :(得分:1)
答案 2 :(得分:1)
作为一个可能有用的问题,我想知道为什么浏览器不允许每个(比方说)窗口/标签使用代理?我认为很多是因为在开发时间方面缺乏实用性。
这也可能是因为浏览器[推测]可能会集中引擎来处理Web请求和缓存等...也许,允许每个窗口和/或选项卡的代理会从根本上改变现代浏览器的设计和/或对性能产生负面影响。我真的不知道。为了进一步说明这一点,请考虑隐身模式和私密浏览等内容。在这些情况下,浏览器至少在概念上为每个窗口制作了单独的缓存...但我仍然认为隐身窗口和标准窗口(在Chrome中)使用相同的底层Web请求引擎。
现在有很多人想要一个JavaScript和DOM解析器和解释器。 HtmlAgility Pack和Jint等项目有所帮助,但似乎没有统一的标准解决方案;至少不是一个简单的网络浏览器。
[咆哮下面] ......
不幸的是,像Jint和HtmlAgility这样的项目令人担忧。首先,它们不是IE,Chrome,Safari或FireFox。你并不完全知道自己在做什么。例如,您知道在Chrome页面中,xyz.com可以完美地加载和渲染。您可以启动FireFox并查看可能与其他浏览器不同的东西等等。但是,有了这些库,你真的不知道如果不是一切都正常工作(没有可视化显示进行快速检查)。另外,谁知道他们正在开发什么样的速度。他们跟不上HTML5吗?他们是否落后于主流浏览器?性能怎么样?更重要的是,浏览器已经拥有缓存和性能增强等功能,我怀疑你会对各个库有所了解。
最好的浏览器控件当然是这样的:
IWebBrowser browser = new IE();
IWebBrowser browser = new Chrome();
IWebBrowser browser = new Safari();
IWebBrowser browser = new FireFox();
不幸的是,我认为这是一个梦想。首先,如果你想用这些加载插件怎么办?用户配置文件,用户登录等等如何?我想我们大多数人只是想要没有这些额外功能的浏览器的肌肉。
我真的希望你找到一个好的Chrome解决方案。我不知道你在FireFox领域会有什么运气 - 也许你可以让我们更新?这些解决方案发展如此之快 - 我在今天之前从未听说过CefSharp或WebKit.NET,几个月前我也在寻找相同的东西(Chrome和/或FireFox .NET浏览器)供我自己使用。如果很多人聚在一起,建立一个标准的界面然后每个公司都根据规范构建他们的嵌入式浏览器,那将是很棒的。这是祝愿。