SoSearch — 高速な擬似Web検索API(Rust製)

Web

概要

SoSearchはRustで実装された「疑似Web検索エンジンAPI」です。SerpAPIやTavilyのインターフェースを模倣しつつ、公式の有料APIキーに依存せずに動作することを目標としています。内部ではtokioに基づく非同期I/Oで複数の検索エンジンへ並列リクエストを投げ、得られたHTMLやJSONをスクレイピングして統合レスポンスを生成します。TLSインパーソネーション(例:Chrome 124を模したTLS挙動)や専用ライブラリ(rquest)を使い、ボット検出の回避と高速化を図っています。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 27
  • フォーク数: 3
  • ウォッチャー数: 27
  • コミット数: 5
  • ファイル数: 15
  • メインの言語: Rust

主な特徴

  • 高速・並列実行:tokioベースの非同期処理で複数エンジンを同時スクレイピング
  • API互換性:SerpAPIやTavilyのようなレスポンス形式を模倣して扱いやすさを確保
  • ボット回避技術:TLSインパーソネーション(User-AgentだけでなくTLS指紋の模倣)を導入
  • 公式APIキー不要:公開された検索エンジンを直接参照して結果を集約

技術的なポイント

SoSearchの技術的核は、Rustの安全性と性能、そして非同期並列処理によるスループットの確保にあります。tokioランタイム上で複数のターゲットエンジンへ並列リクエストを送り、最短の応答を組み合わせてAPIレスポンスを返す「マルチプレクシング」戦略を取ります。HTMLの解析や結果抽出はスクレイピングに依存するため、堅牢なパーサーとエラー耐性が重要です。READMEにあるようにrquest(独自/外部のHTTPクライアント)を使い、TLS挙動をブラウザに似せることでボット検出を回避しやすくしています。Rustで書かれていることでメモリ安全性や低オーバーヘッドが期待でき、並列接続数やレスポンス整形処理におけるパフォーマンス面で有利です。加えて、外部APIキーに依存しない設計はコスト面での利点がありますが、スクレイピング先の仕様変更や法的・利用規約上のリスク管理、レート制限対応やプロキシの導入が運用上の課題になります。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .agents: dir — TLS/ブラウザ指紋やボット回避の設定を格納している可能性があるディレクトリ
  • .gemini: dir — メタ情報や別フォーマット用の設定(プロジェクト固有の補助データ)
  • .github: dir — CIやIssueテンプレート、ワークフローファイルを含むGitHub設定
  • .gitignore: file — ビルド生成物や一時ファイルの無視設定
  • Cargo.lock: file — 現在固定された依存関係のロックファイル
  • Cargo.toml: file — (存在が想定される)プロジェクトの依存関係・メタ情報(ビルド設定)
  • README.md: file — プロジェクト概要、設計方針、利用方法の説明(抜粋あり)
  • src/: dir — エントリポイントやAPIハンドラ、スクレイピングロジックなどのRustソース群
  • .env.example: file — 環境変数のサンプル(API設定やプロキシ情報用)
  • Dockerfile / docker: dir — コンテナ化設定(存在する場合、簡単にデプロイするため)
  • LICENSE: file — ライセンス情報(プロジェクトの利用条件) …他 10 ファイル

(上記はREADME抜粋とリポジトリ情報から推測した主要構成。実際のファイル名や中身はリポジトリを参照してください。)

まとめ

Rustで高速かつ実用的なスクレイピングベースの擬似検索APIを目指す興味深いプロジェクトです。(約50字)

リポジトリ情報:

READMEの抜粋:

SoSearch API

A lightning-fast pseudo Web Search Engine API written in Rust (RIIR - Rewrite It In Rust style). This project emulates popular APIs like SerpAPI or Tavily without needing official and expensive API keys, by multiplexing requests to popular engines directly and scraping the results concurrently.

Philosophy

  • Performance: Powered by tokio for async concurrent I/O.
  • Bot Bypass: Leverages rquest with TLS impersonation (e.g., simulating a Chrome 124 browser f…