SOCKSサーバーが正常に動作しているかどうかを定期的にチェックしたいと思います。そのために、SOCKSサーバーを介して8.8.8.8(google DNSサーバー)にpingを実行することを考えました。
他に推奨される方法はありますか?最適な場合、PythonでSOCKSをpingするにはどうすればよいですか?
SOCKS プロキシは、TCP プロキシ サービスを提供します (SOCKS 5 で UDP サポートが追加されました)。SOCKS プロキシ サービスを「介して」ICMP エコーを実行することはできません。
できたとしても、ICMP Echo と Echo Reply をテストするだけで、SOCKS サーバーが正常に動作しているとは限りません。
SOCKS サーバーが「正常に実行されている」ことをテストしたい場合は、ローカルのリッスン ポートを開き、SOCKS サービス経由で接続を試みることをお勧めします。
httping
通常の の代わりに SOCKS サーバーを介してネットワークをチェックするために使用できますping
。
ping: ICMP ECHO_REQUEST パケットをネットワーク ホストに送信します
httping: ウェブサーバーのレイテンシとスループットを測定します
ICMP は OSI モデルの Layer3 (ネットワーク層) で機能し、SOCKS は Layer5 (セッション層) で機能し、httping は Layer7 (アプリケーション層) で機能するため、ping
メッセージは SOCKS を通過できませんが、メッセージは通過httping
できます。
たとえば、VPS でシャドウソックス (SOCKS5 プロキシ) サーバーをセットアップし、127.0.0.1:1080 を使用して macbook pro をクライアントとして使用し、Google へのネットワークが良好かどうかを確認したいと考えています。
httping -x 127.0.0.1:1080 -g http://www.google.com -5
SOCKS5 を介した httping google のスクリーン キャプチャ
httping usage
httping [options]
-5 The proxy server selected is a SOCKS5 server.
-g url This selects the url to probe. E.g.: http://localhost/
-x proxyhost[:port] Probe using a proxyserver.
これは私が行う方法であり、サブプロセスを使用してオペレーティング システムの ping コマンドを実行し、その出力を正規表現で解析するのがおそらく最も簡単でしょう。
編集
ほとんどの方法でアクティブステートの例があります。ソケットを変更してプロキシを指定する必要がありますが、それは実際には私の領域ではないので、どうすればよいかわかりません。