在使用python的过程中,可以使用selenium进行爬取数据,或使用selenium自动化测试,那么用Golang怎么处理这个问题呢?
其实Golang中也有selenium,Selenium 作为一个用于 Web 应用程序测试的工具,可以模拟真实浏览器进行操作,也可以实现鼠标点击、滚轮、输入等用户日常操作。
我们通过2节课的学习,实现1、本地启动selenium服务;2、远程启动selenium服务。
1.伪装http header,我们可以使用phanomjs的API来实现:
派生到我的代码片
1. <span style="font-family:SimSunfont-size:18px">page.customHeaders = {
2. "Referer" : referrer,
3. "User-Agent" : "Mozilla/5.0 (Windows NT 6.1WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER 1.1"
4. }</span>
2.伪造referer欺骗js,这一点其实就要麻烦一些:我们需要首先打开referer页面,然后再模拟点击消息转到目的网站,具体方法如下:
1. <span style="font-family:SimSunfont-size:18px">page.onLoadFinished = function(status){
2.
3. // Only once do
4. if ( page.firstLoad ) {
5. page.firstLoad = false
6. // Inject and Click a Link to our target
7. page.evaluate(function (href) {
8. // Create and append the link
9. var link = document.createElement('a')
10. link.setAttribute('href', href)
11. document.body.appendChild(link)
12.
13. // Dispatch Click Event on the link
14. var evt = document.createEvent('MouseEvents')
15. evt.initMouseEvent('click', true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, link)
16. link.dispatchEvent(evt)
17. }, targetUrl)
18. } else {
19.// 此处我们已经成功伪造referer信息,并且打开Target url页面
20. console.log(targetUrl+"\t"+page.url)
21.
22. }
23. }</span>
3.伪造User Agent欺骗js,这一点其实就要麻烦一些,但是我们也可以通过phantomjs的API来实现:
在CODE上查看代码片
1. <span style="font-family:SimSunfont-size:18px">page.settings.userAgent = "Mozilla/5.0 (Windows NT 6.1WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER"</span>
4. 使用代理,这个phantomjs支持的就更好啦,调用的时候加入代理的参数即可:
派生到我的代码片
1. <span style="font-family:SimSunfont-size:18px">phantomjs --proxy=ip:port</span>
5.添加cookies(我知道phantomjs设置cookies可行,目前还没有验证,据称有以下三种方法):
page.customHeaders = {Cookie: xxx}
phantom.addCookie({
'name': 'yandexuid',
'value':'21611441383258191',
'domain': '.yandex.ru'))
})
phantomjs --cookies-file=cookies.txt
说到这里其实我们已经得到了一个动态的爬虫,它可以之行js代码,可以抓取到网页的动态内容,具有浏览器的header并且无法被js、ajax、java、php代码识别,甚至也无法被后台的日志分析识别。目前为止该方法的qps并不高,因为加载js和phantomjs并发性能不高。
其实这个爬虫有很多的用处:
1.伪造点击信息,最近CNZZ公布了中小网站的流量来源中30%是来自奇虎360的,众所周知CNZZ是植入js代码统计网站的访问量和来源的。这些完全可以用我们的代码伪造访问量,并且伪造访问来源呀。
2. 爬取网站动态内容,有很多网站是基于ajax和js设计的,现在我们就可以爬取到这些代码执行得到的数据。
3.逃避反爬虫策略,这个就太明显了。