🎯 カスタマイズ可能で検出回避型のクラウドブラウザ。自社開発のChromiumを搭載し、ウェブクローラーAIエージェント向けに設計されています。👉今すぐ試す
ブログに戻ります

ウェブアンロッカーAPI:任意のページをHTML、Markdown、またはPNGにレンダリング

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

08-Jul-2026

TL;DR:

  • Web Unlockerは任意のURLをクリーンなデータに変換します。 URLをunlocker.webunlockerに送信すると、HTML、プレーンテキスト、Markdown、スクリーンショット、または抽出コンテンツとしてページが返されます。ブラウザを管理する必要はありません。
  • JavaScriptレンダリングはフラグであり、別の製品ではありません。 jsRender.enabled: trueを設定すると、レスポンスが構築される前に実際のブラウザでページがレンダリングされるため、クライアントサイドのコンテンツがすでに表示されています。
  • レスポンスの形状を選べます。 response.typehtmlplaintextmarkdownpngjpegnetwork、またはcontentのいずれかです。LLM用にMarkdownをリクエストしたり、スクリーンショット用にPNGを取得したり、構造化された抽出用にcontentをリクエストできます。
  • プロキシ国はフィールドです。 リクエストをその地域の住宅用出口を経由させるためにproxy.countryを設定します。ミスマッチした地域は、ページが異なるようにレンダリングされる一般的な理由の一つです。
  • 2つのタイムアウトがすべての呼び出しを制御します。 30秒のページロード上限と180秒のグローバル実行上限があります。ページロードの制限が優先されます。
  • 開始は無料です。 新しいScrapelessアカウントには無料のUniversal Scraping APIの使用が含まれています。app.scrapeless.comでサインアップしてください。

導入:1つのエンドポイント、任意のページ、あなたが求めた形状

ほとんどのスクレイピングコードは、データの周りにすべての労力を費やします:ブラウザを立ち上げ、JavaScriptを待ち、ブロックを処理し、そしてHTMLを使えるものに解析します。Scrapeless Universal Scraping APIはこれを単一のHTTPリクエストに統合します。URLをWeb UnlockerアクターにPOSTすると、レスポンスはページであり、すでにレンダリングされ、あなたが求めた形式になっています。

このガイドでは、unlocker.webunlockerアクターのエンドツーエンドを説明します:リクエストの形状、最初のcurl、レスポンスエンベロープ、Python統合、JavaScriptレンダリングが返せる7つのレスポンスタイプ、リクエストをクリーンに保つ方法についてです。以下のすべてのリクエストとレスポンスは、ライブAPIに対してキャプチャされました。


何ができるのか

  • ページを生のHTMLとして取得する — クリーンな出口を通じてのプレーンなGETで、自分でマークアップを解析する時に利用できます。
  • JavaScriptが多く使われているページをレンダリングするjsRender.enabledを設定し、クライアントが実行した後にのみ存在するコンテンツを読み取ります。
  • LLM用のMarkdownを取得するtype: markdownをリクエストし、その結果をRAGパイプラインやプロンプトに直接フィードします。
  • スクリーンショットをキャプチャするtype: pngまたはjpegをリクエストし、レンダリングされたビューポートを画像として取得します。
  • 構造化されたコンテンツを抽出する — ヘッディング、リンク、テーブル、メール、画像、メタデータをページから引き出すためにtype: contentをリクエストします。
  • ネットワークリスポンスを監視する — ページが作成するXHR(XMLHttpRequest)/fetchレスポンスを、URL、ステータス、およびメソッドでフィルタリングしてキャプチャするためにtype: networkをリクエストします。
  • 最初にページを操作する — レスポンスが作成される前にinstructionsを実行します(セレクタを待つ、クリック、入力、キーを押すなど)。

なぜScrapeless Universal Scraping APIが必要なのか

Universal Scraping APIは管理されたWebアンロックのインターフェースです。URLを送信すると、レンダリング、出口、そして検出防止を処理し、クリーンなデータを返します。このワークフローに特有の利点は以下の通りです:

  • クラウド側のJavaScriptレンダリング — 実際のブラウザがページを実行するため、シングルページアプリケーションやレイジーロードされたコンテンツはレスポンスが構築される前に解決されます。
  • 195以上の国に住宅用プロキシproxy.countryを通じてルーティングし、出口IPの評判をクリーンに保ち、地理的にルーティングされたページが正しく表示されます。
  • 自動チャレンジ処理 — reCAPTCHA v2、Cloudflare Turnstile、Cloudflareの中間ページはアクター内で処理されます。
  • 7つのレスポンス形式 — HTML、プレーンテキスト、Markdown、PNG、JPEG、ネットワークキャプチャ、そして同じエンドポイントからの構造化コンテンツ。
  • 1つのHTTP契約 — ブラウザのライフサイクルやドライバーバージョンは不要です。レスポンスはデータそのものです。

無料プランであなたのAPIキーを取得するには、app.scrapeless.comを訪れてください。


前提条件

  • ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップしてください。
  • 最初のリクエストにはcurl、統合にはPython 3.10以上(またはNode.js 18以上)が必要です。
  • HTTPとJSONに関する基本的な理解が必要です。

Web Unlockerの動作

すべての呼び出しは、{actor, input, proxy}のJSONボディを持つ1つのエンドポイントへのPOSTです。

リクエストパラメータ

フィールド 場所 意味
actor トップレベル unlocker.webunlocker
input.url 入力 取得するページ
input.method 入力 HTTPメソッド(デフォルトはGET
input.redirect 入力 リダイレクトを follow(true/false
input.jsRender 入力 { enabled, response, instructions, block } — レンダリングオプション
proxy.country プロキシ ISO国コードまたはANY

認証にはx-api-tokenヘッダーを使用します。レスポンスエンベロープは常に{ "code": 200, "data": ... }です。

curlを使用した簡単なキャプチャ

住宅用出口を通じてページをHTMLとして取得します:

bash Copy
curl -X POST https://api.scrapeless.com/api/v2/unlocker/request \
  -H "x-api-token: ${SCRAPELESS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
```json
{
  "actor": "unlocker.webunlocker",
  "input": { "url": "https://www.example.com", "method": "GET", "redirect": false },
  "proxy": { "country": "ANY" }
}

レスポンスエンベロープ

json Copy
{
  "code": 200,
  "data": "<!doctype html><html>…</html>"
}

codeが200であればリクエストが成功したことを意味し、dataにはペイロードが含まれます — ここではHTMLテキスト、他のレスポンスタイプの場合はMarkdownやbase64画像などです。


PythonでのAPI統合

Pythonから同じ呼び出しを行うには、環境からキーを読み取ります:

python Copy
import os
import requests

API_KEY = os.environ["SCRAPELESS_API_KEY"]

resp = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
    json={
        "actor": "unlocker.webunlocker",
        "input": {"url": "https://www.example.com", "method": "GET", "redirect": False},
        "proxy": {"country": "ANY"},
    },
    timeout=70,
)

data = resp.json()
if data.get("code") == 200:
    html = data["data"]
    print(len(html), "バイトのHTML")

無料プランでAPIキーを取得: app.scrapeless.com


JavaScriptのレンダリング:7つのレスポンスタイプ

ページを実際のブラウザでレンダリングするには、まずjsRenderを追加します。response.typeが何が返されるかを決めます。ページのMarkdownを要求します — LLMに最適です:

python Copy
payload = {
    "actor": "unlocker.webunlocker",
    "proxy": {"country": "ANY"},
    "input": {
        "url": "https://www.example.com",
        "jsRender": {
            "enabled": True,
            "response": {"type": "markdown"},
        },
    },
}
resp = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    json=payload,
    headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
    timeout=70,
)
print(resp.json()["data"])
# "# Example Domain\n\nこのドメインはドキュメントの例で使用されます..."

typeフィールドは形式を選択します:

response.type 返されるもの
html JavaScript実行後のレンダリングされたHTML
plaintext 可視テキスト、マークアップが除去されています
markdown ページのMarkdown (LLM対応)
png / jpeg base64文字列としてのスクリーンショット
network urlsstatusmethodsでフィルタリングされたキャプチャされたXHR/fetchレスポンス
content 構造化された抽出 — 見出し、リンク、テーブル、画像、メール、メタデータ

スクリーンショットの場合、pngをリクエストし、base64のdataをバイトにデコードします:

python Copy
import base64

payload["input"]["jsRender"]["response"] = {"type": "png"}
resp = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    json=payload,
    headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
    timeout=70,
)
with open("page.png", "wb") as f:
    f.write(base64.b64decode(resp.json()["data"]))

キャプチャ前のページ操作

コンテンツがインタラクション後にのみ表示される場合、instructionsを渡します — 各命令はレスポンスを構築する前にレンダラーが順番に実行する動詞です:

json Copy
{
  "actor": "unlocker.webunlocker",
  "input": {
    "url": "https://example.com",
    "jsRender": {
      "enabled": true,
      "instructions": [
        { "waitFor": [".dynamic-content", 30000] },
        { "click": ["#load-more", 1000] },
        { "fill": ["#search-input", "search term"] },
        { "keyboard": ["press", "Enter"] },
        { "evaluate": "window.scrollTo(0, document.body.scrollHeight)" }
      ]
    }
  }
}

また、jsRender.block.resourcesで必要ないリソースタイプをブロックすることで帯域幅を削減できます(例:ImageFontMediaStylesheet)。これにより、リソースカテゴリに従ってフェッチ層がスキップします。


一般的な問題を回避する方法

  • ページに存在しないフィールドはnullであり、エラーではありません。 抽出されたフィールドはすべてオプションと見なし、その不在に備えてガードを使用します。存在すると仮定しないでください。

  • 2つのタイムアウトに注意。 ページ読み込みの上限は30秒で、グローバル実行の上限は180秒であり、すべての呼び出しが制限されています。また、ページ読み込みの制限が優先されます — waitForの値をその範囲内に保ってください。ターゲット自体がエラーになると、見えるステータスコードはHTTPセマンティクス仕様に定義されています。

  • コンテンツに国を固定。 ページが地理的にルーティングされる場合、proxy.countryを望むバージョンを提供する地域に設定します; ANYは必要ない場合は問題ありません。

  • 応答タイプを慎重に選択してください。 データが必要なときは markdown または content をリクエストしてください。解析が必要な html ではありません — 抽出はどちらにしてもサーバー側で行われ、アンロッカーが処理する自動トラフィックパターンは OWASP自動脅威プロジェクト にカタログされています。


結論:必要な形のページ

Webアンロッカーは、スクレイプを一つの決定に減らします: どのURL、どの応答タイプです。レンダリング、出口、そして検知防止はアクター内で処理されるので、JavaScriptが多く使用されているページは単一のリクエストでクリーンなMarkdownまたはスクリーンショットになります。完全なインタラクティブセッションが必要なときはScraping Browserと組み合わせて使用し、住宅用およびデータセンターの出口についても学んでください。プロキシの評判がほとんどのレンダリング結果を決定します。Universal Scraping APIのドキュメントはすべてのフィールドをカバーしています。


AI駆動のデータパイプラインを構築する準備はできましたか?

私たちのコミュニティに参加して、無料プランを取得し、抽出パイプラインを構築している開発者とつながってください: Discord · Telegram

app.scrapeless.com で無料のUniversal Scraping APIを登録し、スケールのための料金を確認してください。


FAQ

Q: WebアンロッカーとScraping Browserの違いは何ですか?
Webアンロッカーは単一のリクエスト/応答エンドポイントです — URLを送信し、一度のコールでページを取得します。Scraping Browserは、PuppeteerやPlaywrightで駆動する完全なインタラクティブクラウドブラウザです。抽出と解析にはアンロッカーを使用し、マルチステップセッションにはブラウザを使用します。

Q: JavaScriptレンダリングを有効にする必要がありますか?
必要なコンテンツがクライアントレンダリングされている場合のみです。単純な GET でサーバーのHTMLが返されますが、jsRender.enabled: true を追加するとページが最初に実際のブラウザで実行されます。これはシングルページアプリやレイジーロードされたコンテンツに必要です。

Q: LLMパイプラインにはどの応答タイプを使用すればよいですか?
markdown — これは、マークアップが取り除かれたクリーンなMarkdownとしてページを返し、ほとんどのRAGおよびプロンプトパイプラインが望むものです。プローズではなく、見出し、リンク、テーブルなどの個別のフィールドが必要な場合は content を使用してください。

Q: スクリーンショットを取得するにはどうすればよいですか?
response.typepng または jpeg に設定します。data フィールドはbase64文字列として返されるので、それをデコードして画像バイトに変換します。

Q: プロキシは必要ですか?
出口はビルトインです。特定の地域の住宅用IPを経由させるためには proxy.country を設定するか、サービスに選択させるために ANY を使用します。ページがジオルーティングされたり、データセンターのIPに挑戦する場合、国を特定することが重要です。

Q: タイムアウトはどのようになっていますか?
固定の30秒のページロード制限と180秒のグローバル実行制限があります。ページロードの制限が優先され、グローバル制限の前にコールが終了することがあるので、waitFor 値はその予算内に収めておく必要があります。

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ