前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >劳动节 | 说说代理池

劳动节 | 说说代理池

作者头像
tinyfisher
发布2020-05-13 17:25:50
7910
发布2020-05-13 17:25:50
举报
文章被收录于专栏:湛卢工作室

近期由于工作中的遇到的问题,在研究代理池,其实代理池应该说已经是比较成熟的技术,而且在飞速发展,比如现在主流的“秒拨”技术,给企业在风险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):

代理服务器的配置如下:

代码语言:javascript
复制
REMOTR_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWORDED_FOR = Your IP

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

2、匿名代理(Anonymous Proxy):

代理服务器的配置如下:

代码语言:javascript
复制
REMOTR_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWORDED_FOR = Proxy IP

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

3、混淆代理(Distorting Proxy):

代理服务器的配置如下:

代码语言:javascript
复制
REMOTR_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWORDED_FOR = Random IP

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

4、高匿代理(Elite Proxy):

代理服务器的配置如下:

代码语言:javascript
复制
REMOTR_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWORDED_FOR = not determined

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

0x03 搭建一个代理池

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

代码语言:javascript
复制
https://ip.ihuan.me/Proxies.7z
http://www.89ip.cn/
https://www.xicidaili.com/
...

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

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

代码语言:javascript
复制
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的方式已经难以应对,需要重点从应用层面去解决。对于这个痛点,行业内也在积极探索解决方案,出现了“动态防御”的理念,通过动态封装、动态混淆,动态令牌和动态验证来有效进行人机识别。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 湛卢工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 代理服务器原理和类型
  • 0x02 代理类型的区别
  • 2、匿名代理(Anonymous Proxy):
  • 3、混淆代理(Distorting Proxy):
  • 4、高匿代理(Elite Proxy):
    • 0x03 搭建一个代理池
      • 0x04 代理池攻防
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档