golang爬虫登录(四-进阶版)以及利用fiddler抓包

Posted pu369

tags: π 计算位数程序 golang    [Golang]OS系统    _ golang 引入相对路径 goroot    .net core golang性能    .net开发 golang 谁方便   

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang爬虫登录(四-进阶版)以及利用fiddler抓包相关的知识,希望对你有一定的参考价值。

前几篇文章摸索了如何用golang模拟登录;对简单的情况,甚至可以用GET方式代替POST方式登录。

但现在想抓取公司泛微OA系统的网页,就遇到一些困难。

难点:

1、登录页POST提交后,会有http 302跳转。后来发现不是问题,因为用http.Client.Do会自动处理跳转。

2、网站使用了FrameSet,还有大量jquery动态生成加载内容,这个处理起来比较困难,链接也是JS生成,只能针对具体问题具体分析。

3、用chrome控制台抓到的header提交不成功,于是想到fiddler抓包,正好电脑上曾经下载过一个汉化版。

过程(主要是解决了POST登录问题):

1、参考https://blog.csdn.net/qq_24373725/article/details/80584810  用fiddler抓包(我下载的汉化版本一启动就自动抓所有包,感觉很方便,就是不知道有无后门),在过滤器中设置服务器网址:192.168.132.80;在 规则-自动断点处-勾选 在请求之前。

2、在IE中从登录页输入用户名、密码后提交登录。就会在fiddler中抓到表单对应的提交网址:/login/VerifyLogin.jsp,接着在断点处中断了。点击相应的: 运行到结束,或:中断响应(对于rameset中的一些页面可以中断响应,框架网页的一部分会显示空白),经过几次鼠标点击操作,一串页面先后执行完毕。

3、最重要的还是form表单对应的/login/VerifyLogin.jsp页(其他网页其实没什么用),查看抓包到的原始数据为(我将用户名和密码改了:-)

4、试着将上述数据写入go代码中,直接上代码:

让人感到高兴的是,代码中:

1.http.NewRequest 所需参数,也就是表单数据,应该叫body部分吧(与http头 有一个空行间隔开),可以直接从抓包到的 原始 数据 中一次复制出来。见代码中的post_arg变量值。

2.http header(请求头部分)也可直观在从抓包到的 原始 数据 中看到。即代码中req.Header.Set设置的那些http头内容。

当然,遗留的问题还是难以解决,如:获取jquery延迟加载的数据,打开javascript链接对应的网址、找frameset中的元素。解决办法应该还是要用headless无头浏览器处理。

以上是关于golang爬虫登录(四-进阶版)以及利用fiddler抓包的主要内容,如果未能解决你的问题,请参考以下文章