別の特定の IP アドレスからサイトにログインするために、Python 経由でプロキシを使用しようとしています。ただし、特定の Web サイトでは元の (ホスト) IP アドレスを検出できるようです。私はこの問題を少し調べましたが、ここに私が見つけたものがあります。
私が試した4つのプロキシ方法があります:
- プロキシ設定のある Firefox。
- でパイソン
mechanize.set_proxies
。 - 内部ネットワークを使用する仮想マシン内の Firefox と、ルーターとして機能する別の仮想マシン (NAT とその内部ネットワークの 2 つのアダプターを持つ) は、内部ネットワーク トラフィックがプロキシ経由でルーティングされるように設定されます。
- TorBrowser (Firefox を実際のブラウザーとして使用します)。
最初の 3 つは同じプロキシを使用しました。Tor オプションは追加のテスト用であり、私自身のプロキシ経由ではありません。次のことは、私が気づいた予想される動作です。
- これらすべてを使用して にアクセスすると
http://www.whatismyip.com/
、正しい IP アドレス (ホスト コンピューターではなく、プロキシの IP アドレス) が表示されます。 whatismyip.com
これらすべてに対して「プロキシが検出されませんでした」と表示されます。
実際、私がアクセスした Web サイトは、私の IP がプロキシの IP であると考えているようです。ただし、一部のサイトが元の IP アドレスを何らかの方法で検出できると思わせる奇妙なケースがいくつかあります。
- ある状況では、米国以外のプロキシを使用して Firefox 経由で米国以外のサイトにアクセスすると、そのサイトは文字通り (米国からの) 私の元の IP アドレスを出力し、アクセスを拒否することができました。これは不可能ではないでしょうか?ただし、同じ非 US プロキシを使用する仮想マシン、または非 US 出口ノードを使用する TorBrowser を介してサイトにアクセスすると、サイトはアクセスできませんでした。
- 同様の状況で、私は米国以外のプロキシから別の米国以外のサイトにアクセスしていました。仮想マシン内の Firefox から、または非 US 出口ノードを使用して TorBrowser からサイトにログインすると、サイトは正常に機能します。ただし、プロキシ (仮想マシンが使用するのと同じプロキシ) または を使用して Firefox 経由でログインしようとする
mechanize
と、関連のないエラー メッセージが表示されてログインに失敗します。 - 3 番目の状況では、
mechanize.set_proxies
オプションを使用して、あまりにも多くのリクエストでサイトを過負荷にしたため、アクセスをブロックすることにしました (ログインするたびに意図的にタイムアウトするようにしました)。プロキシの IP アドレスをブロックしたのではないかと考えました。ただし、別のホスト マシンから同じプロキシを使用してコードを実行すると、再びブロックされるまで、しばらくの間、再び機能しました。(心配する必要はありません。これ以上サイトに嫌がらせをするつもりはありません。プログラムを再実行したのは、彼らの側からのブロックではなく、私の側の不具合である可能性があると考えたからです。) Firefox + プロキシを使用してそのサイトにアクセスするブロックされたホストの 1 つからのソリューションでも、意図的なタイムアウトが発生しました。
Firefox + プロキシとmechanize
ケースでは、これらすべてのサイトがホスト マシンの IP アドレスについて何かを見つけることができたように思えますが、TorBrowser と仮想マシンのケースではそうではありませんでした。
サイトはどのようにしてこの情報を収集できますか? サイトがこの情報を収集するのを妨げる TorBrowser と仮想マシンのケースの違いは何ですか? また、プロキシ経由でアクセスしているサイトがホスト/ホストの IP アドレスを検出できないように、Python スクリプトをどのように実装すればよいでしょうか?