如何在没有远程站点能够检测主机/主机IP的情况下使用代理?

时间:2012-09-12 14:55:40

标签: python security http networking proxy

我正在尝试通过python使用代理,以便从不同的特定IP地址登录网站。但是,某些网站似乎可以检测到原始(主机)IP地址。我已经调查了一下这个问题,这就是我找到的。

我尝试过四种代理方法:

  • 使用代理设置的Firefox。
  • Python mechanize.set_proxies
  • 使用内部网络的虚拟机中的Firefox,以及充当路由器的另一个虚拟机(具有两个适配器:NAT和内部网络),设置为使内部网络流量通过代理路由。
  • TorBrowser(使用Firefox作为实际浏览器)。

对于前三个我使用相同的代理。 Tor选项仅用于其他测试,而不是通过我自己的代理。以下是我注意到的预期行为:

  • 所有这些,如果我转到http://www.whatismyip.com/,它会提供正确的IP地址(代理的IP地址,而不是主机)。
  • whatismyip.com说“所有这些都没有检测到代理”。

事实上,我访问的网站似乎认为我的IP是代理的IP。但是,有一些奇怪的案例让我觉得有些网站能以某种方式检测我的原始IP地址。

  • 在某种情况下,通过Firefox使用非美国代理访问非美国网站,该网站确实可以打印我的原始IP地址(来自美国)并拒绝我访问。这不应该是不可能的吗?但是,通过具有相同非美国代理的虚拟机或具有非美国退出节点的TorBrowser访问该站点,该站点无法执行此操作。
  • 在类似情况下,我正在访问非美国代理商的另一个非美国网站。如果我从虚拟机内的Firefox或从具有非美国退出节点的TorBrowser登录到该站点,该站点将正常工作。但是,如果我尝试使用代理(虚拟机使用的相同代理)或mechanize通过Firefox登录,则无法使用无关的错误消息登录。
  • 在第三种情况下,使用mechanize.set_proxies选项,我重载了一个请求太多的网站,因此它决定阻止访问(每当我登录时它都会故意超时)。我以为它可能阻止了代理的IP地址。但是,当我从不同的主机运行代码但使用相同的代理时,它会再次运行一段时间,直到它们再次阻止它为止。 (不用担心,我不会再骚扰网站了 - 我重新运行程序,因为我认为这可能是我的结果,而不是他们的结束。)使用Firefox +代理访问该网站来自其中一个被阻止的主机的解决方案也导致了有目的的超时。

在我看来,在Firefox +代理和mechanize案例中,所有这些网站都能够找到有关主机IP地址的信息,而在TorBrowser和虚拟机情况下,它们并不是“T。

网站如何收集这些信息?有关阻止网站收集此信息的TorBrowser和虚拟机案例有何不同?而且,我如何实现我的python脚本,以便我通过代理访问的站点无法检测到主机/主机的IP地址?

1 个答案:

答案 0 :(得分:2)

代理可能会在X-Forwarded-For HTTP标头中报告您的真实IP地址,但如果是这样,我很惊讶WhatIsMyIP网站没有告诉您。

如果您是第一次直接访问非美国网站,然后再次使用该代理,那么该网站可能会在您首次访问时在您的浏览器中设置cookies,该网站甚至可以识别您的网站在您的IP地址更改后。这可以解释您在浏览器实例之间观察到的差异。

(我注意到学术期刊网站喜欢这样做。如果我试图从家里访问付费应用的文章并因为我没有使用我大学的代理服务器而被封锁,我通常必须在之后清除cookie允许代理被允许访问。)