还在用WebBrowser吗?你out了!

背景:

最近想抓取自己在某后台的数据发布情况,只在登录那一步就把我搞蒙了,一堆请求,不知道做了什么操作。登录的数据也做了加密,甚至我都没有找到对应的js在哪个地方对登录信息进行了加密。跟踪网络请求情况跟踪到了相应的数据。但是无从下手,放弃了采集的想法,改用最古老的方式。手动登录后,跳转到要获取数据的页面,把当前页面相关数据采集下来。

尝试的方法:

1、使用iframe嵌入想要采集的页面

在一个主的页面嵌入iframe,通过主页面获取iframe里面的内容。这是我最初的想法,想想挺美,我还可以在自己的后台嵌入这个页面,操作人员直接登录后台就可以就行相应的操作。

经过测试之后此方法行不通,因为存在跨域问题,主页面与子页面无法通讯,虽然可能通过相关的技术可以实现跨域的问题,但仅限于主页面与子页面都是受你控制的情况下。我调用的别人家后台,别人家的后台页面我无法操作,放弃了这种操作。

2、登录后台页面,使用WebBrowser获取相应的数据

该页面使用的技术太潮了,WebBrowser不支持,登录页还能展示,登录就去之后大大的空白页,可能是js执行出错,导致页面显示不出来,又放弃了。

3、只能使用CEF了

完美的解决WebBrowser遇到的问题。

数据能够正常展示之后,手动跳转到要获取数据的页面,调用页面内容,通过正则表达式的方法获取相应的数据。

 var result= wb.GetSourceAsync().Result;//调用页面内容

  

还有可以优化的地方——侦听network访问情况,直接抓取json数据。

如果能够做到这样就不需要对页面进行正则表达式匹配了,效率更高。网上找到一些方法,我用的最新版本的CEF现在结构发生了变化,已经不再适用,等我有空再研究研究。

 

上一篇:用 .Net WebBrowser 控件获取POST数据


下一篇:c# winform 打开html界面(含引用外部文件js)