当我们对某些网站进行爬去的时候,我们经常会换IP来避免爬虫程序被封锁。代理ip地址如何获取?其实也是一个比较简单的操作,目前网络上有很多IP代理商,例如西刺,芝麻,犀牛等等。这些代理商一般都会提供透明代理,匿名代理,高匿代理。那么这几种代理的区别是什么?我们该如何选择呢?本文的主要内容是讲解各种代理 IP 背后的原理。

1 代理类型

代理IP一共可以分成4种类型。前面提到过的透明代理IP,匿名代理IP,高匿名代理IP,还有一种就是混淆代理IP。最基础的安全程度来说呢,他们的排列顺序应该是这个样子的高匿 > 混淆 > 匿名 > 透明。

2 代理原理

代理类型主要取决于代理服务器端的配置。不同配置会形成不同的代理类型。在配置中,这三个变量REMOTE_ADDR,HTTP_VIA,HTTP_X_FORWARDED_FOR 是决定性因素。

REMOTE_ADDR

REMOTE_ADDR 表示客户端的 IP,但是它的值不是由客户端提供的,而是服务器根据客户端的 IP 指定的。

如果使用浏览器直接访问某个网站,那么网站的 web 服务器(Nginx、Apache等)就会把 REMOTE_ADDR 设为客户端的 IP 地址。

如果我们给浏览器设置代理,我们访问目标网站的请求会先经过代理服务器,然后由代理服务器将请求转化到目标网站。那么网站的 web 代理服务器就会把 REMOTE_ADDR 设为代理服务器的 IP。

X-Forwarded-For(XFF)

X-Forwarded-For 是一个 HTTP 扩展头部,用来表示 HTTP 请求端真实 IP。当客户端使用了代理时,web 代理服务器就不知道客户端的真实 IP 地址。为了避免这个情况,代理服务器通常会增加一个 X-Forwarded-For 的头信息,把客户端的 IP 添加到头信息里面。

X-Forwarded-For 请求头格式如下:

X-Forwarded-For: client, proxy1, proxy2

client 表示客户端的 IP 地址;proxy1 是离服务端最远的设备 IP; proxy2 是次级代理设备的 IP;从格式中,可以看出从 client 到 server 是可以有多层代理的。

如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:

X-Forwarded-For: IP0, IP1, IP2

Proxy3 直连服务器,它会给 XFF 追加 IP2,表示它是在帮 Proxy2 转发请求。列表中并没有 IP3,IP3 可以在服务端通过 Remote Address 字段获得。我们知道 HTTP 连接基于 TCP 连接,HTTP 协议中没有 IP 的概念,Remote Address 来自 TCP 连接,表示与服务端建立 TCP 连接的设备 IP,在这个例子里就是 IP3。

HTTP_VIA

via 是 HTTP 协议里面的一个header,记录了一次 HTTP 请求所经过的代理和网关,经过1个代理服务器,就添加一个代理服务器的信息,经过2个就添加2个。

3 代理类型区别

透明代理(Transparent Proxy)

代理服务器的配置如下:

REMOTE_ADDR = Proxy IP

HTTP_VIA = Proxy IP

HTTP_X_FORWARDED_FOR = Your IP

透明代理虽然可以直接“隐藏”客户端的 IP 地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到客户端的 IP 地址。

匿名代理(Anonymous Proxy)

代理服务器的配置如下:

REMOTE_ADDR = proxy IP

HTTP_VIA = proxy IP

HTTP_X_FORWARDED_FOR = proxy IP

匿名代理能提供隐藏客户端 IP 地址的功能。使用匿名代理,服务器能知道客户端使用用了代理,当无法知道客户端真实 IP 地址。

混淆代理(Distorting Proxy)

代理服务器的配置如下:

REMOTE_ADDR = Proxy IP

HTTP_VIA = Proxy IP

HTTP_X_FORWARDED_FOR = Random IP address

与匿名代理的原理相似,但是会伪装得更逼真。如果客户端使用了混淆代理,服务器还是能知道客户端在使用代理,但是会得到一个假的客户端 IP 地址。

高匿代理(Elite Proxy 或 High Anonymity Proxy)

代理服务器的配置如下:

REMOTE_ADDR = Proxy IP

HTTP_VIA = not determined

HTTP_X_FORWARDED_FOR = not determined

高匿代理既能让服务器不清楚客户端是否在使用代理,也能保证服务器获取不到客户端的真实 IP 地址。

4 代理的选择

普通的匿名代理IP能隐藏客户机的真是IP,但是也会改变我们的请求信息,服务器端有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道客户端的 IP 地址,但仍然可以知道你在使用代理,当然某些能够侦测 IP 的网页仍然可以查到客户端的 IP。

而高度匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,服务器端不会认为我们使用了代理。

因此,爬虫程序需要使用到爬虫代理ip 时,尽量选择普通匿名代理和高匿名代理。另外,如果要保证数据不被代理服务器知道,推荐使用 HTTPS 协议的代理。

Python爬虫:爬虫所需要的爬虫代理ip是什么?相关推荐

  1. python爬虫隐藏ip_Python3网络爬虫之使用User Agent和代理IP隐藏身份

    本文介绍了Python3网络爬虫之使用User Agent和代理IP隐藏身份,分享给大家,具体如下: 运行平台:Windows Python版本:Python3.x IDE:Sublime text3 ...

  2. Python爬虫方式抓取免费http代理IP

    我们新手在练手的时候,常常需要一些代理IP进行爬虫抓取,但是因为学习阶段,对IP质量要求不高,主要是弄懂原理,所以花钱购买爬虫代理IP就显得没必要(大款忽略),今天跟大家分享一下,如果使用爬虫抓取免费 ...

  3. 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)

    同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...

  4. python爬虫热点代理_Python爬虫实战——反爬策略之代理IP【无忧代理】

    一般情况下,我并不建议使用自己的IP来爬取网站,而是会使用代理IP. 原因很简单:爬虫一般都有很高的访问频率,当服务器监测到某个IP以过高的访问频率在进行访问,它便会认为这个IP是一只"爬虫 ...

  5. [爬虫架构] 如何在分布式爬虫架构中动态维护一个代理IP池(付费代理)

    前言: 当分布式爬虫使用代理IP技术时,通过直接在爬虫程序中添加平台api接口的方式已经不能满足我们了,因为分布式的爬虫架构每秒的代理IP-URL的请求数会远远大于平台限制的请求频率,当然,对于没有限 ...

  6. 爬虫如何选择合适的HTTP代理IP

    爬虫如何选用合适的代理IP,下面来介绍一下: 众所周知,在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁 IP 的问题通常会使用代理IP.代理IP分为免费代理和付费代理. ...

  7. 爬虫笔记7:requests设置代理IP

    一.为什么要设置代理IP 爬虫爬取网站时,如果被对方识别是爬虫,就很可能被封号(即不能访问该网站). 二.怎么获取IP 1.通过网站:https://www.ipip.net/(获取外网IP) 2.通 ...

  8. 老鱼Python数据分析——篇二:系统设计(找代理IP)

    开发环境:win7 x64版本,python 3.6,Anaconda3 (64-bit) 因为频繁访问容易被封IP,所以我们需要使用代理来进行数据的爬取(当然你也可以放慢节奏,比如每5秒爬一条记录) ...

  9. (python爬虫时)如何知道是否代理ip伪装成功

    通过请求  http://httpbin.org/get   获得类似以下信息: {"args": {}, "headers": {"Accept&q ...

  10. 100天精通Python丨黑科技篇 —— 26、代理ip技术(request)

    文章目录 一.背景知识:requests 1.pip安装requests 2.pycharm安装requests 3.示例:一行代码使用requests 4.requests常用调用(get.post ...

最新文章

  1. 同向逆向、多车道线检测
  2. postfix邮件系统经典退信
  3. 用navicate 连接本地数据库提示用户名/口令无效
  4. 世界卫生日:大数据解读抑郁症群体
  5. python 利用 for ... else 跳出双层嵌套循环
  6. C++为什么摒弃auto_ptr
  7. IntelliJ IDEA 使用随笔
  8. NSPredicate 谓词
  9. Spring Data MongoDB级联保存在DBRef对象上
  10. 字节流写数据搭配异常处理
  11. 《解读NoSQL》——1.4 小结
  12. 药大保研计算机要求,药物分析专业保研经验贴
  13. vestacp升级php,升级VestaCP面板PHP版本至PHP7.x
  14. jQuery AJAX 方法
  15. 3807. 构造字符串——AcWing题库
  16. atitit 项目注册功能算法attilax总结.docx
  17. HaaS EDU场景式应用学习 - 光照信息屏
  18. 图论及其应用 2017年期末考试 答案总结
  19. 最小生成树算法之Kruskal算法
  20. 如何无需开发集成易快报、招行CBS等第三方应用

热门文章

  1. 把握问题的关键(转自知乎)
  2. vue 移动端适配方案
  3. 调频无线话筒的电路图
  4. 震惊:70%的人投简历七天内就有回音
  5. 让 ChatGPT 自己告诉你如何与它高效交流(对话全过程展示,请自行感受)
  6. 操作系统——廉价磁盘冗余阵列
  7. Linux下TInbsp;omap芯片nbsp;MUX…
  8. 第一次在MDN上贡献自己的代码
  9. Trie(字典树)解析及其在编程竞赛中的典型应用举例
  10. 医学影像半监督分割--基于数据扰动