专栏首页湛卢工作室劳动节 | 说说代理池

劳动节 | 说说代理池

近期由于工作中的遇到的问题,在研究代理池,其实代理池应该说已经是比较成熟的技术,而且在飞速发展,比如现在主流的“秒拨”技术,给企业在风险IP识别和判定上带来极大的难度。代理池技术目前被广泛用于爬虫、灰黑产、SEO、网络攻击、刷单、薅羊毛等等领域。

0x01 代理服务器原理和类型

当客户端对服务器端提出请求时,此请求会被送到代理服务器,代理服务器转发用户请求到 实际服务器端。

代理类型一共分为四种:透明代理、匿名代理、高匿代理、混淆代理

安全程度:高匿 > 混淆 > 匿名 > 透明

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

1、REMOTE_ADDR:REMOTE_ADDR 表示客户端的 IP,但是它的值不是由客户端提供的,而是服务器根据客户端的 IP 指定的。如果使用浏览器直接访问某个网站,那么网站的 web 服务器(Nginx、Apache等)就会把 REMOTE_ADDR 设为客户端的 IP 地址。我们给浏览器设置代理,我们访问目标网站的请求会先经过代理服务器,然后由代理服务器将请求转化到目标网站。那么网站的 web 服务器就会把 REMOTE_ADDR 设为代理服务器的 IP。

2、X-Forwarded-For(XFF):X-Forwarded-For 是一个 HTTP 扩展头部,用来表示 HTTP 请求端真实 IP。当客户端使用了代理时,web 服务器就不知道客户端的真实 IP 地址。为了避免这个情况,代理服务器通常会增加一个 X-Forwarded-For 的头信息,把客户端的 IP 添加到头信息里面。如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:

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

0x02 代理类型的区别

1、透明代理(Transparent Proxy):

代理服务器的配置如下:

REMOTR_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWORDED_FOR = Your IP

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

2、匿名代理(Anonymous Proxy):

代理服务器的配置如下:

REMOTR_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWORDED_FOR = Proxy IP

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

3、混淆代理(Distorting Proxy):

代理服务器的配置如下:

REMOTR_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWORDED_FOR = Random IP

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

4、高匿代理(Elite Proxy):

代理服务器的配置如下:

REMOTR_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWORDED_FOR = not determined

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

0x03 搭建一个代理池

搭建代理池可以选择免费和付费两种方式,国内一些免费的IP代理资源包括:

https://ip.ihuan.me/Proxies.7z
http://www.89ip.cn/
https://www.xicidaili.com/
...

这些免费资源有的已经提供API,我们直接可以提取代理资源。另外一部分需要我们将代理IP爬取下来,比如西刺免费代理:

目前,在github上有许多搭建代理池的项目,可以进行参考:

https://github.com/iamhmx/MXProxyPool
https://github.com/jhao104/proxy_pool
https://github.com/xiaobeibei26/dynamic_ip_pool
https://github.com/henson/proxypool
...

原理一般是通过爬取各个免费的代理资源中的代理IP信息,存储到本地,进行性验证,维护可用代理IP列表,然后在需要使用的时候取出代理IP。

免费的资源最大的问题就是代理IP不可用、不稳定,测试下来,虽然能爬取几千个代理IP,但真正用的可能在10个以内,利用率在1%左右。 另外就是付费模式,这里国内也有很多的服务提供商,现在提供的服务模式多种多样,长期的,包月的,甚至可以按次服务。一般来说代理的匿名度越高,时效越长,价格也越贵。

0x04 代理池攻防

自从企业开始在IP层面根据一些阻断的规则(如设定单位时间内IP的访问次数阈值、限制触发特定行为的IP等)起,攻防的较量就开始了。为了绕过企业的IP阻断规则,早期黑产获取代理IP的方式主要利用高性能的服务器对全网进行扫描,扫描开放代理服务的服务器,或者是直接爬取其他代理网站的数据,收录有效代理IP和端口。全网的代理IP数量相对有限,稳定性也堪忧,而通过V**的方式成本又太高。同时,不少甲方也慢慢开始积累代理IP威胁情报信息,进一步打压了黑产使用代理IP的效果。

攻防升级,黑产迅速研发出“秒拨”技术。通俗的讲,秒拨的底层思路就是利用国内家用宽带拨号上网(PPPoE)的原理,每一次断线重连就会获取一个新的IP。黑产掌握大量宽带线路资源,部署自动断线重连切换IP以及攻击的工具后,便可发起攻击。

现在很多付费的代理池资源,都是利用的“秒拨”技术,“秒拨”对基于ip的安全防护和风控措施构成了严峻的挑战:一方面秒拨ip数量巨大,因为地区级的宽带ip池往往有十万甚至百万级别的ip数;另一方面,秒拨ip可做到秒级切换,且与正常用户共用ip池,使用者可能在极短时间内从正常用户变为黑灰产,导致识别难度较大,而且一旦大规模封禁,很有可能造成误伤,引起客户投诉。

最近,一年一度的大型攻防演习即将开始,类似“秒拨”的代理池技术同样会给防守方带来巨大挑战。攻击方如果采用代理池技术,可能会对防守方产生两个极端影响:

1、如果攻击方将攻击流量分散在大量IP中,极端情况下每一个ip一次攻击,SIEM这类的综合分析系统可能根本不会产生告警,因为攻击没有达到告警阈值,只能人工去分析各类安全告警日志,发现可能异常,类似于威胁狩猎。

2、攻击者利用海量代理IP产生海量攻击,则防守方也会产生海量告警和海量阻断IP的请求,造成Alert DOS和Block DOS,一方面消耗防守大量的精力进行分析,另一方面甚至造成封禁IP的个数超过防守方设备上限,使其防御体系失效,而此时再进行针对性的攻击,就可以达到声东击西的效果。

总之,以“秒拨”为代表的代理池技术已然成为当下安全行业的痛点之一,仅仅依靠威胁情报、网络层封IP的方式已经难以应对,需要重点从应用层面去解决。对于这个痛点,行业内也在积极探索解决方案,出现了“动态防御”的理念,通过动态封装、动态混淆,动态令牌和动态验证来有效进行人机识别。

技术不分好坏,代理池技术在黑产手上会给企业带来极大困扰,但企业也可尝试利用代理池技术提升运营质量,这块下回再说。今天是五一国际劳动节,向所有劳动者致敬!

本文分享自微信公众号 - 湛卢工作室(xuehao_studio),作者:俞学浩

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ZeroLogon(CVE-2020-1472) 分析与狩猎

    2020年9月11日,安全公司Secura发布了公告,披露了Microsoft在2020年8月修补的漏洞细节(CVE-2020-1472)。该漏洞也称为...

    tinyfisher
  • Vulnhub靶机实战 | joker

    https://www.vulnhub.com/entry/ha-joker,379/

    tinyfisher
  • 免root将手机(Android&IOS)改造成移动渗透神器

    渗透测试人员都习惯一台笔记本走天下,但有的时候笔记本还是太大,一些地方用笔记本做渗透测试还是太招摇,而且有的时候也不会随身都带笔记本。这时如果可以利用随身携带的...

    tinyfisher
  • 带你了解代理 IP 那些事

    在爬取某些网站时,我们经常会设置代理 IP 来避免爬虫程序被封。我们获取代理 IP 地址方式通常提取国内的知名 IP 代理商(如西刺代理,快代理,无忧代理等)的...

    猴哥yuri
  • 爬虫入门经典(六) | 一文带你深入了解为什么使用代理IP及其如何使用

    我们在做爬虫的过程中经常会遇到以下情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden...

    不温卜火
  • 进击的爬虫:用Python搭建匿名代理池

    專 欄 ❈ 苍冥,Python中文社区专栏作者,澳洲华裔,目前在墨尔本某国际咨询公司任职Splunk Developer,擅长网络安全及攻防,热爱Python...

    Python中文社区
  • 有关抽奖的一个算法

    很早以前看到了这个算法,忘记叫什么名字了,这里就索性叫抽奖算法吧,知道的朋友不要扔砖头

    冰封一夏
  • 移动运营商AIS泄漏了83亿条用户数据 容量约4.7 TB

    数据猿报道 安全研究人员贾斯汀·潘恩(Justin Paine)在一篇文章中表明自己发现了一个公开的ElasticSearch数据库,而该数据背后直指泰国一家移...

    数据猿
  • 关于PV,流量和带宽(r5笔记第37天)

    参加了DTCC归来之后,各大电商技术大牛都会自豪的分享一下自己公司网站的PV,流量等等。当时也是一知半解,回来之后赶紧查了查,也算是扫扫盲。 以下摘自网络中,自...

    jeanron100
  • 曝泰国最大的移动运营商泄露83亿条用户数据记录

    昨日,安全研究人员Justin Paine在一篇文章中表明自己发现了一个公开的ElasticSearch数据库,而该数据背后直指泰国一家移动网络运营商分部AIS...

    FB客服

扫码关注云+社区

领取腾讯云代金券