ハイライト
チェックページの望ましい結末は2つしかありません。背後にある本来のページを取得できるか、課金されないかのいずれかです。今週、Reddit、eBay、そしてImperva配下のサイトがこのルールに加わりました。また、長時間のジョブで枠を使い切る前に、トップアップが自動購入される機能も追加されました。さらに、「Invalid API key」という応答は、キーが確実に無効であることを常に意味するようになりました。内容の多くはすでに変更履歴に記載されていますが、今週のアップデートをここにまとめます。
新機能
Reddit、eBay、Impervaのチェックページ
Redditは多数のアドレスからのリクエストに対し、コンテンツを表示する前に「Reddit」というタイトルの短いJavaScriptチェックページを返します。Proxy FinderおよびAutoは、同一の出口でそのチェックを完了し、要求されたページを返すようになりました。他のページと同様、通常料金で請求されます。
eBayは、商品リストへの初回リクエストに対して独自の割り込みページを表示することがあります。このページはブラウザ内でチェックを実行してから商品ページへ遷移します。Browserはチェック完了まで待機し、商品ページを返すようになりました。ただし、eBay側で拒否された場合はチェックページがそのまま返され、課金は発生しません。
Impervaのチャレンジページ、インシデントページ、および割り込みページが、認識済みチェックページのリストに追加されました。Single、Browser、Proxy FinderはこれらをX-FourA-Check-Pageヘッダーで識別し、課金対象から除外します。Autoはこれらをミスとして扱います。保存されたセッションがチェックページに遭遇した場合、チェック結果を渡すのではなく、本来のページを引き続き探索します。
サイトチェックのリファレンスには、認識可能なすべてのシステムと各エンドポイントの動作が記載されています。チェックページが正規の応答のように見えてデータに紛れ込んだ経験がある場合(その仕組みについてはこちらで解説しています)、そうした問題が起きるサイトが新たに3つ減ったことになります。
トップアップの自動購入
プランがトップアップに対応している場合、ダッシュボードの「請求」から自動購入を設定できるようになりました。発動条件は、割り当ての80%、85%、90%、95%使用時から選択できます。また、1回あたりの追加量と1請求期間あたりの最大実行回数も指定可能です。購入ごとに保存済みのカードへ請求が行われ、個別の請求書が発行されてメールで通知されます。
決済が失敗した場合、自動での再試行は行われません。ルールは一時停止し、ダイアログに日付と理由(カードの拒否や銀行による承認要求など)が表示されます。原因を解決してルールを再保存すれば、再び有効化されます。
期間あたりの上限は低めに設定してください。この上限は暴走したジョブが一晩中購入を続けるのを防ぐためのものであり、予算設定を意図したものではありません。各設定の詳細は自動トップアップガイドで確認できます。
「Invalid API key」はキー自体の問題を意味します
「Invalid API key」を伴う401は、キーを検証した上で明示的に拒否したことを常に意味するようになりました。そのため、クライアント側で即座に処理を中断できます。一時的にキーの検証ができない場合でも、過去10分以内に検証済みのキーであればそのまま動作し続けます。それ以外の場合はRetry-After: 5を伴うAPI key check temporarily unavailableの503が返され、課金は発生しません。
この区別により、明確な対処が可能です。
import time
import requests
for attempt in range(3):
r = requests.post(
"https://api.foura.ai/api/single",
headers={"X-API-Key": "pk_live_..."},
json={"url": "https://example.com/data"},
)
if r.status_code == 401:
raise SystemExit(r.json()["error"]) # the key is wrong: fix it, don't retry
if r.status_code == 503 and "Retry-After" in r.headers:
time.sleep(int(r.headers["Retry-After"]))
continue
break
エラーリファレンスでは、4種類すべての503エラーと、それぞれで必要な対応について説明しています。
Markdown形式のドキュメントとブログ
任意のドキュメントページまたはブログ記事の末尾に.mdを追加するか、Accept: text/markdownを指定してリクエストすると、周囲のWeb要素を除去した、AIアシスタントが読み取りやすいクリーンなMarkdownを取得できます。ホーム、料金、API、proxyポート、MCPの各ページにもMarkdown版が用意されており、llms.txtから各ページのMarkdownアドレスにリンクしています。各ドキュメントページと投稿には「Copy as Markdown」ボタンに加え、「Open in ChatGPT」および「Open in Claude」ボタンも配置されています。
(このダイジェストも例外ではありません。URLの末尾に.mdを付けてください。)
細かな修正
- サインアップページの「メールを確認してください」のステップを開いたままにした場合、要求された1通の確認メールのみが送信され、タブを開いたまま待機しても重複送信されなくなりました。必要な場合は、そのステップの「メールを再送信」から別のコピーを送信できます。
- ダッシュボードのOverviewは画面に合わせてパネルを配置し、どのような幅でも各行が均等に収まるようになりました。トラフィックと時間の数値はセルに合わせて丸められ、ホバー時に正確な値が表示されます。RequestsカードとCreditsカードではAutoの数値が緑色で表示され、新規アカウントのサンプルOverviewにもAutoが含まれます。
- 翻訳されたドキュメントページでは英語ページと同じセクションアンカーが使用されるため、セクションリンクと目次は13言語すべてで正しい見出しに移動します。翻訳されたドキュメントや記事の見出しも翻訳されるようになりました。
- ブログのヘッダーはComparisonsにリンクしており、各記事で特定のプロバイダーとFourAの価格を比較しています。ヘッダーは小型スマートフォンからワイドモニターまで、あらゆる画面サイズに対応します。
内部構造
新規のproxyポート接続は、APIコールと同様に全サーバーへ分散されるようになりました。proxyポートやAPIの応答が停止したサーバーは自動的にローテーションから外れ、正常に戻ると復帰します。クライアント側やproxy usernameで変更が必要な設定はありません。
検証ページのパターンを特定するたびに、パーサーが真偽を疑うべき200レスポンスが1つ減ります。