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:为防止失联,方便交流,小码哥欢迎大家加入码道工程读者交流群。
防止失联,关注微信公众号:码道工程。
请先登陆 或 注册