ProxyGo — 軽量プロキシプールサービス
概要
ProxyGo は、複数の公開プロキシソースから HTTP/SOCKS5 プロキシを収集し、動作確認・健康監視を行ったうえで内部に蓄積する、Go ベースの軽量プロキシプールサービスです。外部へは統一されたローカル HTTP プロキシポートを提供し、HTTP リクエストと HTTPS の CONNECT トンネル双方を扱えます。Web 管理画面(ログインあり)で統計確認やフィルタリング、手動での再取得や削除が行え、SQLite によるシンプルな永続化で単一インスタンス運用に向いています。
リポジトリの統計情報
- スター数: 30
- フォーク数: 18
- ウォッチャー数: 30
- コミット数: 2
- ファイル数: 16
- メインの言語: Go
主な特徴
- 公開プロキシソースの自動スクレイピングと可用性検証(起動時および定期実行)
- HTTP/SOCKS5 上流プロキシを集約し、外部へは統一された HTTP プロキシポートを提供
- HTTPS の CONNECT トンネル転送対応と通常 HTTP リクエストの透過
- ログイン付き WebUI による管理(統計、フィルタ、削除、手動取得、ログ表示)と SQLite による永続化
技術的なポイント
ProxyGo は Go 言語で書かれており、軽量で高並列なプロキシ処理が期待できます。設計上は「収集(fetcher)→ 検証(validator)→ 保持(SQLite)→ 提供(proxy server)」というパイプラインを持ち、各フェーズは定期ジョブとしてバックグラウンドで実行されます。上流プロキシは HTTP と SOCKS5 の両方を扱い、内部で統合してクライアントには単一の HTTP プロキシとして見せるため、接続時に上流の種類を判別して適切にフォワードする処理が組み込まれています。
HTTPS の CONNECT を処理することで TLS トンネルを透過させ、エンドツーエンドの暗号化を維持したままプロキシ経由の通信を可能にしています。可用性チェックは定期健康診断(ヘルスチェック)により非稼働プロキシを自動で除外し、SQLite による永続化はシングルファイル DB のためセットアップが容易で単一ノード運用に適していますが、分散スケールや高可用性を求める用途では注意が必要です。
実装面では Go の並行処理(goroutine)とタイムアウト制御を活かしたネットワーク呼び出し設計、設定ファイル(config)による起動パラメータの調整、Dockerfile を用いたコンテナ化が確認できます。Web 管理画面は認証付きで、統計やログの可視化、フィルタリング、手動トリガーなど運用に必要な操作を備えています。コミット数が少なくドキュメントも簡潔なため、導入前にはコードの把握とセキュリティ確認(管理 UI の認証設定や公開範囲など)が推奨されます。
プロジェクトの構成
主要なファイルとディレクトリ:
-
.dockerignore: file
-
.gitignore: file
-
Dockerfile: file
-
README.md: file
-
checker: dir
-
main.go: プログラム入口(アプリ起動と各コンポーネントの初期化)
-
config/: デフォルト設定・設定読み書きの処理
-
fetcher/: プロキシソースからのスクレイピング/収集ロジック
-
validator/: 収集したプロキシの可用性検証ロジック
-
その他 WebUI、DB 操作、ログ出力用のファイルなど
…他 11 ファイル
まとめ
軽量で導入しやすいプロキシプール。単体運用や実験用途に最適。
リポジトリ情報:
- 名前: proxygo
- 説明: 説明なし
- スター数: 30
- 言語: Go
- URL: https://github.com/jonasen1988/proxygo
- オーナー: jonasen1988
- アバター: https://avatars.githubusercontent.com/u/131840919?v=4
READMEの抜粋:
ProxyGo
一个基于 Go 的轻量代理池服务。程序会从公开代理源抓取 HTTP/SOCKS5 代理,验证可用性后写入 SQLite,并对外暴露一个统一的本地 HTTP 代理入口,同时提供带登录的 Web 管理后台。
功能概览
- 启动时自动抓取并验证代理
- 后台定时抓取新代理
- 后台定时健康检查,自动清理不可用代理
- 聚合 HTTP 和 SOCKS5 上游代理,对外统一提供 HTTP 代理端口
- 支持普通 HTTP 请求和 HTTPS
CONNECT隧道转发 - 内置 WebUI,支持查看统计、筛选代理、删除代理、手动触发抓取、查看日志、修改部分运行参数
- 使用 SQLite 持久化代理池数据
项目结构
.
├── main.go # 程序入口
├── config/ # 默认配置、配置加载与保存
├── fetcher/ # 代理源抓取
├── validator/ # 代理可用性验证
├── checker/ ...