爬虫进阶路程5——无头浏览器的坑

    本来以为经历前面四道坑,算是走到了反爬的顶端,没想到不到三个月再次倒下了,因为之前的爬虫程序突然被反爬了,怎都拿不到数据,一开始以为自己的代理ip被封了,但是我一个一个试,换了好多个代理ip,没有一个有用的,难道天下所有的ip都被封了嘛。一开始我是这么认为的。一个偶然,就是我用本地的浏览器来爬数据,是可以的,于是我给本地浏览器也加了一个代理ip,发现还是可以的,而同样的代理ip在linux就不行了。
    那原因基本就定位到了,是因为window上我们使用的是正常的浏览器,而linux上我们使用的是无头浏览器,为了证明这个原因,我在window上启动谷歌浏览器的时候加上–headness参数,以无头的形式启动,果然这样是无法爬取到数据的,也就是是否无头存在一些特征被暴露出去了。而且根据是否无头来判断是否是爬虫也很准,因为普通用户是不可能用无头浏览器来进行浏览数据的,那一定就是爬虫了。应对这个反爬两种思路,一种是抹去无头痕迹,另一种是直接使用有头浏览器。一开始是想用第一种方式的,结果很难解决,最终走第二条路,第二条路也有两个思路,一再linux上使用Xvfb,看网上其实有很多关于这个方法的教程,但是我在自己的centos操作时,没法实现,最终我选择租了一台低配真的window服务器,然后上面安装了谷歌浏览器。
    那最终就是无非是把这个window服务器上的谷歌浏览器对外开发端口使用了,但这里会遇到一个和之前linux同样的问题,就是chrome默认的远程调用端口是只对本地访问的,所以需要另外一个端口来进行转发,之前linux上是通过ssh来创建一个转发隧道的。window上同样也有方法实现这种转发:

解释一下这其中的参数意义

1.listenaddress – 等待连接的本地ip地址

2.listenport – 本地监听的TCP端口(待转发)

3.connectaddress – 被转发端口的本地或者远程主机的ip地址

4.connectport – 被转发的端口

这里举个例子,服务器内网IP是172.16.0.4,需要将8080端口转发到国外服务器104.104.104.104的9999端口,那么命令如下:

netsh interface portproxy add v4tov4 listenaddress=172.16.0.4 listenport=8080 connectaddress=104.104.104.104 connectport=9999

下面的命令是用来展示系统中的所有转发规则:

netsh interface portproxy show v4tov4

而我们这里,是需要任意客户端请求9023端口的数据,转发到本地9022端口,所以命令如下:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9023 connectaddress=127.0.0.1 connectport=9022
切记listenaddress这个要写0.0.0.0,不能写本地ip,否则只能本地访问了,另外就是打开安全组,关闭防火墙了。最后可以通过
telnet ip 9023
来看看端口是否能联通

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值