selenium爬虫使用代理的正确姿势

selenium爬虫使用代理的正确姿势

1、前言

  在前面几篇我们陆续介绍了webrtc日期与地理位置去除webdriver这几种比较实用的对抗反爬风控的技巧,道高一尺,魔高一丈,与天斗其乐无穷,与风控斗朝九晚九,今天小码哥再介绍一种情况下,你想都想不到的风控系统识别你的方式。

2、问题

  我们在使用selenium+chromedriver+chrome+socks5代理这种方式开发自动化程序的时候(默认我们已经加上了前言里阐述的三项的措施),代码如下:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option(
    "excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
    'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')
#加socks5代理
chrome_options.add_argument("proxy-server=socks5://127.0.0.1:1080")
driver = webdriver.Chrome(
    "./chromedriver", chrome_options=chrome_options)
driver.get("https://whoer.net/")

不知咋的一段时间后还是被服务器风控给揪出来了这是为啥? ……

3、原因

  因为你的代理服务器可能正在被风控系统反向追踪,风控系统通过反向端口扫描你暴露给风控系统的IP,可以知道你的代理服务器是否建立了socks5代理服务。如下图,我们来看下这个流程:

  • 1、代理服务器123.123.123.123建立socks5代理服务,监听端口1080
  • 2、浏览器配置代理为socks5://123.123.123.123:1080 访问web服务器
  • 3、风控系统记录下访问者也就是代理服务器的IP
  • 4、风控系统直接扫描此IP开放了1080对应socks5代理服务
  • 5、然后123.123.123.123直接被禁

结局如下: 风控系统笑着说:没想到吧?老子一个反向扫描你还不得给我乖乖现出原形?

4、解决方案

  了解到风控是如何识别你的,解决方案就很简单,就是给代理服务器设置访问白名单,禁止掉除了你的爬虫出口IP的其他任何访问的IP,设置方法我就不说了,搜索引擎一下iptables配置,如果是云服务器的话在云服务器控制台配置。

  PS:最后提出一个问题我们都知道,在使用socks5代理的时候,chrome是原生内置不支持socks5代理验证的,有没有比较好的办法解决呢?欢迎大家探讨交流,后续小码哥也会提出一种解决方案。

  PSS:为防止失联,方便交流,小码哥欢迎大家加入码道工程读者交流群。

防止失联,关注微信公众号:码道工程。

本文作者:小码哥

本文链接:http://www.tnt0.com/archives/10

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

selenium爬虫:一行代码去掉所有w... <<
0 条评论

请先登陆注册

已登录,注销 取消