ハイライト
今週、Autoを本番環境にリリースしました。任意のURLを指定するだけで、コストを考慮したラダー(probe、出口の探索、browserによる解決、低コストのreplay)を順に実行し、コンテンツとそれを取得したsessionを返します。minfin.bgでの初回(コールド状態)のCloudflare Turnstile解決は、Autoを経由して約5秒かかります。次の呼び出しは、Single経由で2クレジットの低コストなreplayとして処理されます。また、ブログ、ドキュメント、アップデートポータルに6つの言語を追加し、対応言語数を7から13に拡大しました。
新機能
Auto: 1つのendpoint、4つの製品、コストを考慮
POST /api/auto が利用可能になりました。URLを渡すだけで、最適な製品(Single、Proxy Finder、またはBrowser)を自動選択し、Cloudflareのチャレンジが表示された場合はそれを処理し、responseに加えて、成功したproxy ID、cookies、user agentを含む session オブジェクトを返します。返されたsessionを次の呼び出しで再利用すると、Autoは新規に解決処理を繰り返すことなく、Single経由で2クレジットのreplayを実行します。
すべてのresponseに meta トレースが含まれるようになり、どの段階で成功したか、防御策が解決されたか、何回のサブ呼び出しを要したか、および消費された総クレジット数を確認できるようになりました。独自の validate ルールを設定すれば、Autoは最終段階だけでなくすべての段階でそれを適用します。これにより、以前のようにトランスポート層で200が返されただけのジオブロック(地域制限)ページが成功と判定されることはなくなります。
ダッシュボードのプレイグラウンドにAutoタブが追加され、timeout_ms、ignoreProxies、returnSession、forceProxy が連携されました。コードに組み込む前に、フォームからAutoを試すことができます。
6つの新しい言語
スペイン語、フランス語、日本語、韓国語、ブラジルポルトガル語、ロシア語がブログ、ドキュメント、アップデートポータルに加わり、公開サイト全体の対応言語が7から13に増えました。コンテンツは役割を考慮したパイプラインで翻訳されています。ナビゲーションラベルには直訳よりも簡潔さを重視するプロンプトを適用してサイドバーを短く保ち、記事の本文にはMarkdownを維持するプロンプトを適用してコードブロックや見出しをそのまま残しています。
言語スイッチャーも再構築されました。国旗の表示は廃止されました(スペインの国旗は他の20のスペイン語圏の国々を疎外することになり、同様の論理がポルトガル語、アラビア語、英語にも当てはまるためです)。現在はネイティブの言語名が表示され、各オプションにはアクティブなUI言語での名称も表示されます。そのため、ブルガリア語のブラウザからでも「Deutsch」を「немски」として見つけることができます。上部の検索ボックスに入力して13のロケールから目的の言語を絞り込み、矢印キーで移動し、Enterキーで切り替えることができます。各オプションは hreflang と lang を備えた本物の <a href> であるため、検索エンジンやAIクローラーはすべての言語バージョンを巡回できます。
Cloudflare処理: 実際に修正された内容
Autoは、以前は誤ったresponseを返してしまっていた4つのCloudflareの状況に対処できるようになりました:
- トランスポート層で200が返される「Just a moment」のインタースティシャル(中間ページ)は、成功とはみなされなくなりました。Autoはチャレンジページをそのまま渡すのではなく、解決フェーズへとエスカレーションします。
- 非インタラクティブなチャレンジ(marathonbetの「Checking your browser」自動パスなど)は、クリア後にクライアントサイドでレンダリングされます。Browserは、空のトップレベルのresponseでタイムアウトする代わりに、アクティブなDOMをポーリングし、
cf_clearanceが設定された瞬間に処理を完了します。 - チャレンジクリア後の実際のスステータスが尊重されます。チャレンジ通過後にCloudflareが返すジオブロックは、不審な本文を伴う200ではなく、451を返します。
- インタラクティブなTurnstile(minfin.bg)をエンドツーエンドで解決します。Autoはまず直接送信(direct-egress)によるbrowser解決を試み(信頼された送信endpointはTurnstileを通過しますが、無料のデータセンター出口ではチャレンジがエスカレーションされます)、それが失敗した場合はproxyの試行へとフォールバックします。
MCP: foura_auto とパブリックディスカバリー
MCPサーバーに、/api/auto をミラーリングする foura_auto ツールが追加されました。URLを渡すと、コンテンツとsessionが返されます。ディスカバリー(ツール、プロンプト、機能)は認証不要になり、エージェントは認証前に閲覧できるようになりました。また、/llms.txt マップはルートでproxyされます。リンク評価(link equity)のためにランディングページは foura.ai/mcp に移動し、サブドメインはブラウザをそこへ301リダイレクトします。
内部の仕組み
フェッチャー周囲のSSRF境界を強化しました。カーネルレベルの送信(egress)ファイアウォールにより、リクエストを発行する2つのサービスがプライベート、CGNAT、リンクローカル、およびクラウドのメタデータ範囲への接続を開くことをブロックします。アプリケーションレベルのチェックはすでにURLをカバーしていましたが、低レイヤーのパスでもすり抜けが不可能になりました。リクエストの proxy フィールドも同様に処理されます。プライベートアドレスに解決されるクライアント指定のproxyホストは、リクエストが送信される前に拒否されます。
クライアントが送信した場合であっても、アクティビティログに生のproxy URLが保存されることはなくなりました。表示されるresponseには常に不透明なbase36形式のproxy IDが含まれ、保存されるペイロードもこれに一致します。また、すべてのAPI responseから x-powered-by headerを削除しました。
数値で見る実績
- minfin.bgでのインタラクティブなTurnstile解決: 約5秒で省庁のコンテンツを含む200を返し、その後はキャッシュされたsessionを介したreplayごとに2クレジット。
- 同時負荷がかかっているレート制限(rate limit)対象において、Autoはすべてのリクエストを1つの出口に集中させるのではなく、複数の出口に分散させるようになりました(固定出口ホストで4つの異なる出口を使用、24回中21回のreplayが2クレジット)。
- ブログ、ドキュメント、アップデートで13言語が稼働中。
Autoは、私たちがこの四半期を通じて目指してきたAPIの形そのものです。URLを指定し、responseを取得し、sessionを保持する。今後の興味深い取り組みは境界部分にあります。実際のトラフィックにおいてコスト考慮ラダーがどの程度効果的に償却されるかを測定すること、そして誰も想定していない偽陽性の成功ケースを検出するvalidateパターンを見つけ出すことです。