您的位置:首页 >新闻资讯 > 正文

普通代理IP如何避免被X-Forward-For发现?

来源:互联网 作者:admin 时间:2019-12-04 14:33:21

  代理IP的一大优势是我们可以通过IP地址的切换,让我们的真实IP地址在上网的时候得到很好的隐藏,根据不同的隐匿效果,代理IP可以分为透明代理、普通代理、高匿代理这几种。

普通代理更好的隐藏方式

  透明代理的隐私度较差,普通代理能够用一些技术手段被破除,那么,是不是用普通代理就一定会被 X-Forward-For 发现?


  在解读 RFC7239 - Example Usage 时,我们了解到 X-Forward-For 会记录原始 IP,在使用多层 IP 代理的情况下记录的是上层 IP。利用这个特点,是不是可以伪造一下呢?


  既然 X-Forward-For 和 Referer 一样是头域,那么就说明它可以被人为改变。我们只需要在请求时加上 X-Forward-For 请求头和对应的值即可。代码片段 Python-Request-CustomHeader 实现了这样的需求。


  import requests


  # 请求地址


  targetUrl = "http://111.231.93.117/"


  # 代理服务器


  proxyHost = "220.185.128.170"


  proxyPort = "9999"


  proxyMeta = "http://%(host)s:%(port)s" % {


  "host": proxyHost,


  "port": proxyPort,


  }


  proxies = {


  "http": proxyMeta,


  }


  header = {


  "Referer": "http://www.sfhfpc.com",


  "X-Forwarded-For": "_",


  }


  resp = requests.get(targetUrl, proxies=proxies, headers=header)


  print(resp.status_code)


  print(resp.text)


  代码片段 Python-Request-CustomHeader


  代码运行后,控制台结果如下:


  200


  <!DOCTYPE html>


  <html>


  <head>


  <title>Welcome to nginx!</title>


  <style>


  body {


  width: 35em;


  margin: 0 auto;


  font-family: Tahoma, Verdana, Arial, sans-serif;


  }


  </style>


  </head>


  <body>


  <h1>Welcome to nginx!</h1>


  <p>If you see this page, the nginx web server is successfully installed and


  working. Further configuration is required.</p>


  <p>For online documentation and support please refer to


  <a href="http://nginx.org/">nginx.org</a>.<br/>


  Commercial support is available at


  <a href="http://nginx.com/">nginx.com</a>.</p>


  <p><em>Thank you for using nginx.</em></p>


  </body>


  </html>


  响应状态码是 200,并且返回了 Welcome to nginx 等字样,这说明请求成功。对应的日志记录为:


  220.185.128.170 - - [24/Nov/2019:14:13:24 +0800] "GET / HTTP/1.1" 200 612 "http://www.sfhfpc.com" "python-requests/2.21.0" "_, 180.137.156.168"


  记录显示,原始 IP 为 220.185.128.170、代理清单为 "_, 180.137.156.168"。实际上原始 IP 是 180.137.156.168,而代理服务器的 IP 是 220.185.128.170。代理清单中多出来的短横线是我们在代码中加上的,这里居然也显示了。这说明我们只需要在请求时附带上 X-Forward-For 头域就可以达到伪造的目的。


  如果我想让服务端认为原始 IP 为 112.113.115.116,那么只需要将代码片段 Python-Request-CustomHeader 中 header 对象中 X-Forwarded-For 键对应的值设置为 112.113.115.116 即可。


  保存后运行代码,对应的日志记录如下:


  220.185.128.170 - - [24/Nov/2019:14:28:08 +0800] "GET / HTTP/1.1" 200 612 "http://www.sfhfpc.com" "python-requests/2.21.0" "112.113.115.116, 180.137.156.168"


  根据 RFC7239 - Example Usage,开发者会认为代理清单中的第一组 IP 地址是原始 IP,殊不知这是我们特意为他准备的。


  如果大家不想要额外花多钱去购买高匿代理服务,选择普通代理IP的用户也不用担心,只需要做好这些提前预备,我们的真实IP也能够得到保护。


相关文章内容简介