Socks5 プロキシ サーバーを実装するための 100 行の PHP コード、socks5_PHP チュートリアルの 100 行
socks5 プロキシサーバーを実装するための PHP コード 100 行、socks5 の 100 行
2 日前、ステーション B で、スムーズな画質で LOL をプレイするためのコンピューターを組み立てるために 100 元を要求している男を見て、ふと思いました。 100行のコードでそれができるということ(単純) 何かに気づくのは楽しいです。私は主にPHP開発を行っているので、この記事を書いています。
もちろん、PHP (swoole 拡張機能は除く) 自体はネットワーク サーバー プログラミングが得意ではないため、このプロキシは単なるおもちゃであり、日常使用からは少し離れています。安定した信頼性の高い暗号化 (インターネットサーフィンを学習できるように) プロキシを使用したい場合は、これを使用できます: https://github.com/momaer/asocks-go も 100 行のコードで実装可能ですgoを使って。
書いている途中で、PHPのマルチスレッドはまだ難しいことが分かりました。たとえば、接続ごとに新しいスレッドを作成することを考え始めました。ただし、このスレッドは保存する必要があります (たとえば、配列に保存する)。たとえば、公式の例では次のようになります: https://github.com/krakjoe/pthreads/blob/master/examples/SocketServer.phpそれ以外の場合は、 (curl -L 301 を必要とするアドレス) してみると、何が起こるかわかります。
この例では、実際には、実行されていないクライアントが確実に破棄されるように何かを行うことを示していますが、実行されなくなった接続を破棄する方法については説明しません。親切。 $clients をクラスに入れ、そのクラスをスレッド クラスに渡し、スレッド クラスが終了しようとしたときに $clients 内の対応する接続の設定を解除しようとしましたが、無駄でした。次に、以下はスレッド プールを使用して実装されたプロキシです。論理的に言えば、終了時にプールを shut down() する必要があり、監視ソケットもシャットダウンする必要があります。しかし、100 行のコードでは、その必要はありません。 Ctrl + C を押して、オペレーティング システムにリソースを再利用させます。
なぜPHPはネットワークプログラミングが苦手なのでしょうか?まず、stream_socket_XXX 関連の関数を使用しました。ソケット拡張を使用してみてはいかがでしょうか。ソケット拡張機能に問題があるため、https://github.com/krakjoe/pthreads/issues/581 を参照してください。
また、stream_set_timeout は、stream_socket_recvfrom などの高度な操作では機能しません。http://php.net を参照してください。 /manual/ja /function.stream-set-timeout.phpそして、プロキシを作成するときはこれらを考慮する必要があります。たとえば、リモートのターゲット サーバーに接続する場合、タイムアウト制御がないため、スレッド プールが簡単にいっぱいになる可能性があります。 テストの場合は、curl を使用してください。 ちなみに、現在はリモート DNS 解決のみがサポートされています。このおもちゃは、後で Hedou がインターネットへのアクセスを学習できるようにするためです:curl --socks5-hostname 127.0.0.1:1080 http://ip.cn

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
