概述

    如果走到了这里,算是到了爬虫的终极,因为这说明别人的服务器除了通过并发速度来识别出你是爬虫已经没有其他方式阻止你了,到了这里你也没有太多花里胡哨的招式,就一招:ip代理池。原理也很简单,既然别人通过识别你单台设备的频率来判断你是一个爬虫,那你就让你的爬虫脚本从许多个ip去爬取数据,从而降低单台服务器的频率。所谓ip代理池,理解起来其实就是类似一个正向代理池子,有很多个正向代理,然后你通过这些代理去请求目标url,就能拿到你要的数据了。
    我在开篇中讲到,自己通过阿里云去爬取数据,发现根本无法爬到,原因就是阿里云的网段都是相对固定的,别人直接将这个网段全部拦截了即可,所以虽然不是因为频率造成被拦截,但还是被禁止了访问,而不得不使用代理。但使用代理的时候,其实还是会遇到瓶颈,代理ip也被封了,或者用之前已经被封了,再或者因为代理ip属于某个特定网段无法使用,再或者因为代理ip不是高匿ip,而被目标服务器发现了你原始ip,总之一句话,就算使用代理ip也是不稳定的,充满着不确定性,所以这一切都要求你的ip池足够大,并且可以进行源源不断进行补充。
    这里会有一个问题,既然进行ip拦截效果如此好,为什么一开始不直接使用ip拦截,原因是,通过这个ip特征或者访问频率进行拦截是会有误杀的,不能保证准确拦截每一笔,因为公网ip是会不断动态分配的,而访问频率这件事,你也无法判断到底是你的爬虫,还是用户在无聊的狂点鼠标。而一旦误杀率高了,就会影响用户体验,所以一般这是反爬的最后一堵大门。当然我们从开篇到这一张,其实都一个前提,那就是我们需要爬取的内容是不需要登录验证这种操作的,如果我们爬取的数据需要登录,又会有一个新的征程,比如淘宝,知乎,甚至12306,为什么12306会有如此头疼的登录验证码机制,其实就是想拦截爬虫。

实现

    前面都是说的原理和概述,那承接前一章selenium如何实现代理池爬取呢,其实很简单,如果是按照我前一章的说法,通过启动一个现有的chrome浏览器,那就在启动浏览器的命令里加一个参数:–proxy-server=http://110.89.122.142:4216,其中http://110.89.122.142:4216就是代理地址,下面是我linux上一个完整的chrome启动脚本

echo "关闭老浏览器"
pid=$(ps -ef|grep /usr/bin/chrome |grep -v grep | awk '{print $2}')
echo pid=$pid
if [[ $pid != '' ]]
thenkill -9 $pid
fi
echo "开启新服务"
/usr/bin/chrome --headless --proxy-server=http://110.89.122.142:4216  --disable-gpu --no-sandbox   --remote-debugging-port=9022 > chrome.log  2>&1  &

如果说你是通过selenium来启动一个浏览器,那就在selenium的webdriver中设置参数:–proxy-server=http://110.89.122.142:4216即可,两种方式其实很好理解,但是如果你是通过直接启动浏览器的,那你在启动webdriver时配置代理是无效的,必须通过在启动浏览器的脚本中去配置代理。也很好理解,代理是跟着浏览器走的,如果你手动启动了一个浏览器,再用selenium去控制,启动webdriver时的代理参数就没用作用了。

代理池来源

    既然知道如何配置代理了,那哪里有代理呢,淘宝肯定是一条出路,这里提供两个免费公开的代理源:

  1. 通过接口方式获取代理ip:https://github.com/jiangxianli/ProxyIpLib#%E5%85%8D%E8%B4%B9%E4%BB%A3%E7%90%86ip%E5%BA%93

  2. 通过网站手动获取代理ip:https://ip.jiangxianli.com/country/%E4%B8%AD%E5%9B%BD?country=%E4%B8%AD%E5%9B%BD

当然就像最上面说的,代理ip是具有不稳定性的,所以也不保证绝对可用。

注意点

  1. 选用代理的时候,尽可能使用高匿代理,因为高匿代理会隐藏请求的源ip,这样防止目标服务器通过获取你的原始ip来拦截你
  2. 尽可能选用常规的,看上去像人的ip,比如你使用国外的ip这种比较诡异的就容易被拦截,或者使用阿里云这种代理ip也容易别拦截,别人一眼就识别出你是个机器人了。

爬虫进阶路程4——绕过ip反爬相关推荐

  1. 爬虫笔记38之反爬系列一:ip反爬、

    1.遇到的问题:使用爬虫在爬取数据的时候,如果爬取的频率过快,或者是一些其它的原因,被对方网站识别出来是爬虫程序,这个时候我们的IP就会被面临封杀的危险,一旦IP被封了之后,我们的爬虫程序就无法去爬取 ...

  2. 用python爬取有道翻译遇到反爬,3分钟反反爬绕过其反爬

    利用有道翻译的接口,自制一个翻译程序 查看其翻译接口,发现post请求需要传很多参数,而且经过测验,satl,sigh属于动态生成的,遇到这种问题怎么办?当然有时间的情况下,可以去研究这些参数在哪个响 ...

  3. python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用

    我们中公优就业的老师希望能给那些面临困境的朋友们带来一点帮助!(相关阅读推荐:Python学习就看这里!) 爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具.爬虫的最基本就 ...

  4. 前端电子表数字字体_爬虫:如何优雅应对字体反爬

    目录 THE BEGIN 一 什么是字体反爬 二 如何解密 1.人工解密 2.工具解密 三 建立映射关系 四 解密 THE BEGIN 网页数据爬取可以简单分为三步:抓取页面,分析页面,存储数据.其中 ...

  5. Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章

    前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知 ...

  6. Python爬虫第二课 Selenium介绍和反爬技术

    selenium的介绍 知识点: 了解 selenium的工作原理 了解 selenium以及chromedriver的安装 掌握 标签对象click点击以及send_keys输入 1. seleni ...

  7. 可能是全网唯一一个基于windows和java的关于selenium webDriver绕过网站反爬服务的方法

    事情的起因是我需要用selenium的webDriver技术实现一些简单操作,一直用的是chrome和配套的webDriver(chrome的强大和轻量化真的是无敌的),但是突然有一天发现有些网站我用 ...

  8. 腾讯动漫爬虫与动态随机加载反爬破解技术实战

    本文作者韦玮原创,转载请注明出处. 项目需求与问题引入 有时,我们想爬取腾讯动漫中的漫画,比如,我们不妨打开腾讯动漫中某一个动漫的网址ac.qq.com/Comic/comic-,如下图所示: 然后, ...

  9. Python爬虫入门教程 63-100 Python字体反爬之一,没办法,这个必须写,反爬第3篇...

    背景交代 在反爬圈子的一个大类,涉及的网站其实蛮多的,目前比较常被爬虫coder欺负的网站,猫眼影视,汽车之家,大众点评,58同城,天眼查......还是蛮多的,技术高手千千万,总有五花八门的反爬技术 ...

最新文章

  1. [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
  2. 类继承(c++细节篇六)
  3. oracle u4e00 u9fa5,oracle中文与数字正则实例代码
  4. GridView如何设置View的初始样式
  5. muy bien_配置Java EE应用程序或“将Bien付诸实践”
  6. html 边框轮廓,CSS半圈(边框,仅轮廓)
  7. mysql 创建时间 只能设置一个_在MySQL中创建数据表时,可以设定主键、外键。那么对于一个数据表,能设置的主键和外键个数最多分别是...
  8. error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'产生原因
  9. 多线程junit单元测试
  10. 【OSS 最佳实践】JS SDK使用STS方式实现断点续传
  11. Ubuntu16.04+NVIDIA显卡驱动安装步骤
  12. Ubuntu1804安装ROS(melodic版本)
  13. 程序员是怎么分享微信二维码的
  14. 《罪恶街区/Vice Street》手游用户协议
  15. 巧妙突破大容量邮箱附件大小限制(zz)
  16. 光纤存储服务器虚拟化,光纤存储DELL MD3600连接VMware ESX 65
  17. 狐吧吧刊——遇见最好的浏览器(1-6期)
  18. 初识HTTP——基于《图解HTTP》
  19. 硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)
  20. 钉钉开放平台-小程序开发实战(钉钉小程序客户端)

热门文章

  1. 访问http请求, webservice接口报错证书问题
  2. JavaWeb 尚硅谷书城项目
  3. 计算机教学论研究生学校,渤海大学课程与教学论(计算机)硕士点介绍
  4. C++中实现自动注册的工厂
  5. 无线网络安全之ARP欺骗攻击
  6. 乐山计算机学校电子科技大学,乐山市计算机学校喜获电子科技大学网教先进
  7. 2022年高压电工考试题库及答案
  8. linux应用程序设置粘滞位,Linux中设置粘滞位
  9. 外地人员在京补办身份证流程
  10. Android开发中遇到mBluetoothAdapter.startDiscovery()搜索不到任何蓝牙设备