在Web数据采集中为了避免被服务器封锁而通过代理下载的情况很常见。但是,并非所有的代理都适合于Web数据采集。下面是鲲鹏数据的技术人员给出的说明。

根据HTTP代理的匿名性可以将其分为以下几种:

 
1. 透明代理(Transparent Proxies)
目标服务器能够检测到真实的源IP。
 
目标服务器根据HTTP请求头进行检测,判断依据:
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 通常为代理服务器 IP(或代理软件名称,也可能无此头)
HTTP_X_FORWARDED_FOR = 真实源IP(不用代理时,无此头或值为空)
PS:该类型代理不适合用于Web数据采集。
 
2. (普通)匿名代理(Anonymous Proxies)
目标服务器无法检测到真实的源IP,但能够检测到使用了代理。
 
检测依据:
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 通常为代理服务器 IP(或代理软件名称,也可能无此头)
HTTP_X_FORWARDED_FOR = 代理服务器 IP(知道你使用了代理,但无法得知真实源IP)
PS:该类型代理可以用于Web数据采集,但有被检测到的风险。
 
3. 高匿名代理(High Anonymity Proxies -Elite proxies
目标服务器无法检测到你在是使用代理。
 
检测依据:
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 值为空或无此头
HTTP_X_FORWARDED_FOR = 没数值或无此头
PS:该类型的代理非常适合用户Web数据采集。鲲鹏数据的付费代理方案提供的全部为高匿名类型的代理。
 
另外,不使用代理时发出的头:
REMOTE_ADDR =真实源 IP
HTTP_VIA = 值为空或无此头
HTTP_X_FORWARDED_FOR = 没数值或无此头
 
不过,在检测严格的情况下,即使没有HTTP_VIA头和HTTP_X_FORWARDED_FOR头,如果存在HTTP_PROXY_CONNECTION头,会被认为在使用普通匿名代理。
 
我们提供了一个代理类型检测接口,在浏览器中访问该接口即可显示出你当前使用的代理类型(如下图):
 

哪种代理适合用于Web数据采集的更多相关文章

  1. Yeoman:适合现代Web应用的现代工作流

    Yeoman:适合现代Web应用的现代工作流   Yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自动化的命令行工具)和Bower(一个HTML. ...

  2. squid 三种代理实验

    squid 软件既可以做代理,也可以做实现缓存加速,大大降低服务器的I/O.. 1.其中squid代理分为三种,正向代理.透明代理.反向代理. (1)squid正向代理和squid透明代理都位客户端: ...

  3. At.js – 用于 Web 应用程序的自动完成库

    At.js 是一个自动完成库,用来实现自动完成提示,表情等,就像你在 Github 或 Twitter 上看到的一样.它支持 HTML5 contentEditable 元素.你可以听任何字符,而不仅 ...

  4. 10个用于Web开发的最好 Python 框架

    Python 是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还 ...

  5. Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...

  6. 理解java的三种代理模式

    代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing(). 1 public class ...

  7. 基于redis的分布式锁(不适合用于生产环境)

    基于redis的分布式锁 1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分 ...

  8. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安

    CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...

  9. Spring-Aop的两种代理方式

    Spring-Aop两种代理方式: 1.JDK动态代理:用于目标类实现了接口: 2.Cglib动态代理:用于目标类没有实现接口: spring会依据目标类是否实现接口来选择使用哪种代理方式(目标类:相 ...

随机推荐

  1. [bzoj3244][noi2013]树的计数 题解

    UPD: 那位神牛的题解更新了,在这里. ------------------------------------------------------------------------------- ...

  2. [NOI2015]小园丁与老司机(DP+上下界最小流)

    由于每行点的个数不超过1000,所以行内DP可以使用$O(n^2)$算法. 先找到每个点所能直接到达的所有点(x,y,x+y或x-y相同),用排序实现. 第一问:以行为阶段,对于每行,暴力枚举最有路径 ...

  3. 【贪心】【堆】bzoj2590 [Usaco2012 Feb]Cow Coupons

    每个物品有属性a,b 考虑在仅仅用光优惠券时的最优方案. 显然是按照b排序,取前K个. 但是我们还要尽可能去取剩余的. 假设朴素地取剩余的话,应该把剩余的对a排序,然后尽量去取. 但是有可能对其用优惠 ...

  4. 【常见加密方法】Base64编码&Tea算法简介

    Base64编码 [Base64编码是什么] Base64是一种基于64个可打印字符来表示二进制数据的表示方法. ——维基百科 Base64,顾名思义,是基于64种可视字符的编码方式.这64种符号由A ...

  5. [转]MySQL与Oracle的语法区别详细对比

    Oracle和mysql的一些简单命令对比 1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; SQL> select to_c ...

  6. CDOJ 1279 班委选举 每周一题 div2 暴力

    班委选举 题目连接: http://acm.uestc.edu.cn/#/status/list?problemId=1279 Description 高考的脚步越来越近了--时间如山涧小溪一般悄无声 ...

  7. 迁移11g Rac中OCR和VOTEDISK

    环境:OEL+oracle rac 11.2.0.3 迁移描述:将ocr和votedisk从+DATE上迁移到+OCR_VOTE上: 操作如下: [root@ora2 ~]$ /u01/app/11. ...

  8. [工具开发]Proxpy Web Scan设计与实现

    组内交流培训

  9. NHibernate官方文档中文版--基础ORM(Basic O/R Mapping)

    映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表 ...

  10. JS的数组相关知识

    创建数组方法一: var a1=new Array(5); console.log(a1.length); console.log(a1); //[] ,数组是空的 var a2=new Array( ...