BrowserMob proxy
简述:获取浏览器network中的请求与响应 --BrowserMob proxy
捣鼓了两三天,踩了不少个坑,终于可以用了,网上.NET资料少的可怜,真的都是泪
一.BrowserMob proxy如何配合Selenium使用?
1.需要下载BrowserMob proxy的类库:Here【有些地方要改的 :( 】
2.下载BrowserMob proxy插件,插件:Here
3.下载Selenium类库,从Nuget下载最新的就可以了
刚开始使用BrowserMob proxy遇到的坑:
1.还是要说一下关于.NET资料这个资料少的可怜,过了捣鼓大半天,才跑起来,遇到的第一个问题就是,拿到的GetHar()之后拿不到数据,entries为0
不断地调试后发现,只能拿到Http网页的responce,绝望了呀,现在都是HTTPs的网址,于是又翻过去找【外面的资料更多亿点,内部看不到有人讨论】
说是要设置SslProxy属性为True,这个设置之后连接不上网络了,我去,调试ssl错误。有人说ssl错误的原因是要给浏览器安装信任证书,我去,越来越玄学。
我又捣鼓信任证书,结果还是不管用,我直接跑到插件GIT的开源里面看,发现他们说selenium没有安装信任证书的api,所以必须手动安装。【吃瓜中】
最后终于在国外的GOOGLE Group 关于这个话题的讨论中得到了一些有用的信息:Here 【外国楼主也在纠结为啥获取不了https的response】【吃瓜中】
最后问题解决了,他们好像也不太清楚,到底为啥,反正就是版本问题了,我一看我的BrowserMob proxy插件版本2.0 bate版本,我觉得不能啊,我这可是从官网下的最新版本。
可是为啥他们用的版本比我的还高。我日,原来官方下载的时候自己给我下了这个低版本的。我去【想吐槽】
最后的最后,我吧新的插件下载了出来,访问了百度。 终···············于获得了28条entries,哈哈·······················
最让我傻眼的来了,我发现返回的27条里面只有请求,没有response的content。。哈哈返回的json没有。。。。。。。。。。。。。。
人傻了,别搞好吧,都到最后了,让我弄完吧,气死我了,只要request中url的一些类型信息的话2行JS就搞定了好不
最后更可怕的来了,这个问题很快搜索到了,发现需要开启一个属性capturecontent,例子他们都是java和python,C#找不到这个属性,这个是最绝望的,凭啥差别对待啊~~~~~~~~
在我快绝望的时候,看到了一个外国友人也有同样的提问,问的人真就只有一两个。。。。这里:Here 启发了我,去修改类库的内容,这个大哥说了最后这配置都是要形成一个url字符串然后传给插件的,所以
我这个时候只能自己构造一串字符,最后真的成功了,哈哈~~~~~~~~~~~完美!
最后美滋滋的获取到了response返回的Json,可以为所欲为了~~~哈哈
EnD
在这里就不太多写了,额,其实已经不少了,为什么我这么多废话呢?因为我在找资料的的时候真的太累了,有太多要吐槽的东西了,
为了这玩意我,还把python下载下来,学了一上午python然后调用插件的时候出现一样的错误,不可以范围内https的网站。。哎我都在想要不要混合编程算了,因为.net真的伤不起,后娘养的
为了一上午python发现,Visual Studio果然是世界上最好用的编辑器,其他的真心u用不惯.现在我发现好多东西关于.net的教程都好少,官方网站都没有。net的用力有的都是java和python。。。
要不要学一学python,因为我发现python上手也太快了吧。。
以上都是我吐槽的点:
最后代码奉上,直接跑起来,那这么多废话,大家的事件都挺宝贵的是吧。
Github:Click
重点:直接从github上拿源码运行就可以了,需要查看自己chrome的版本(代码中使用81版本,其他们版本需要改下chromedriver的版本),以及安装javajdk的版本,需要1.8.0版本的才可以
可以获取Https和Http的返回