Docs
Anmelden

Endpoint

PROXYsmartproxy.crawlbase.com:8012
# Username = Ihr Token. Passwort = leer.
# Unterstützt sowohl HTTP- als auch HTTPS-Ziele. Verwenden Sie HTTPS-Proxy-Modus für HTTPS-Ziele.

Schnellstart

Setzen Sie Smart Proxy als Proxy in Ihrem HTTP-Client. Das ist das gesamte Setup.

curl -x 'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012' \
     -k 'https://httpbin.org/ip'
import requests

proxies = {
    'http':  'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012',
    'https': 'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012',
}
res = requests.get('https://httpbin.org/ip', proxies=proxies, verify=False)
print(res.text)
const { HttpsProxyAgent } = require('https-proxy-agent');

const agent = new HttpsProxyAgent(
  'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012'
);

const res = await fetch('https://httpbin.org/ip', { agent });
console.log(await res.text());
require 'net/http'

uri = URI('https://httpbin.org/ip')
proxy = Net::HTTP::Proxy('smartproxy.crawlbase.com', 8012, 'YOUR_TOKEN', '')
http = proxy.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
puts http.get(uri.request_uri).body
package main

import (
    "crypto/tls"
    "fmt"
    "io"
    "net/http"
    "net/url"
)

func main() {
    proxyURL, _ := url.Parse("http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012")
    client := &http.Client{Transport: &http.Transport{
        Proxy:           http.ProxyURL(proxyURL),
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }}
    res, _ := client.Get("https://httpbin.org/ip")
    body, _ := io.ReadAll(res.Body)
    fmt.Println(string(body))
}
TLS-Verifizierung deaktivieren

Smart Proxy fängt TLS-Verbindungen ab, um Proxy-Header hinzuzufügen. Ihr Client sieht das Zertifikat von Crawlbase anstelle des Zielzertifikats, setzen Sie also verify=False / InsecureSkipVerify: true / Äquivalent. Die Verbindung von Crawlbase zur Zielseite wird weiterhin verifiziert.

POST-Requests

Smart Proxy leitet POST-Requests genauso wie jede andere HTTP-Methode an das Ziel weiter. Setzen Sie den Proxy in Ihrem Client und führen Sie POST wie gewohnt aus — der Proxy erhält Ihre Methode, Header und body. Die Beispiele unten decken die beiden Body-Formen ab, die die meisten Clients verwenden: form-encoded und JSON.

Form-encoded body

# HTTP proxy on :8012 (use https:// + :8013 for HTTPS proxy)
curl -X POST \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     -F 'param=value' \
     -x 'http://[email protected]:8012' \
     -k 'https://httpbin.org/anything'
import requests
from urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

proxies = {
    'http':  'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012',
    'https': 'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012',
}
res = requests.post(
    'https://httpbin.org/anything',
    data={'param': 'value'},
    proxies=proxies,
    verify=False,
)
print(res.status_code, res.text)
const { HttpsProxyAgent } = require('https-proxy-agent');
const querystring = require('querystring');

const agent = new HttpsProxyAgent(
  'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012'
);
const res = await fetch('https://httpbin.org/anything', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: querystring.stringify({ param: 'value' }),
  agent,
});
console.log(res.status, await res.text());
require 'net/http'
require 'openssl'
require 'uri'

uri = URI('https://httpbin.org/anything')
proxy = Net::HTTP::Proxy('smartproxy.crawlbase.com', 8012, 'YOUR_TOKEN', '')
http = proxy.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

req = Net::HTTP::Post.new(uri.request_uri)
req.set_form_data('param' => 'value')
res = http.request(req)
puts res.code, res.body
package main

import (
    "crypto/tls"
    "fmt"
    "io"
    "net/http"
    "net/url"
    "strings"
)

func main() {
    proxyURL, _ := url.Parse("http://[email protected]:8012")
    client := &http.Client{Transport: &http.Transport{
        Proxy:           http.ProxyURL(proxyURL),
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }}

    data := url.Values{}
    data.Set("param", "value")
    req, _ := http.NewRequest("POST",
        "https://httpbin.org/anything",
        strings.NewReader(data.Encode()))
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    res, _ := client.Do(req)
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    fmt.Println(res.Status, string(body))
}

JSON body

curl -X POST \
     -H 'Content-Type: application/json' \
     --data '{"key1":"value1","key2":"value2"}' \
     -x 'http://[email protected]:8012' \
     -k 'https://httpbin.org/anything'
import requests
proxies = {
    'http':  'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012',
    'https': 'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012',
}
res = requests.post(
    'https://httpbin.org/anything',
    json={'key1': 'value1', 'key2': 'value2'},
    proxies=proxies,
    verify=False,
)
print(res.status_code, res.text)
const { HttpsProxyAgent } = require('https-proxy-agent');

const agent = new HttpsProxyAgent(
  'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012'
);
const res = await fetch('https://httpbin.org/anything', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ key1: 'value1', key2: 'value2' }),
  agent,
});
console.log(res.status, await res.text());
require 'net/http'
require 'json'
require 'openssl'
require 'uri'

uri = URI('https://httpbin.org/anything')
proxy = Net::HTTP::Proxy('smartproxy.crawlbase.com', 8012, 'YOUR_TOKEN', '')
http = proxy.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

req = Net::HTTP::Post.new(uri.request_uri,
                          'Content-Type' => 'application/json')
req.body = { key1: 'value1', key2: 'value2' }.to_json
puts http.request(req).body

Header und Cookies weiterleiten

Smart Proxy leitet die meisten Header und Cookies Ihres ausgehenden Requests an das Ziel weiter, sodass bestehende Clients ohne Änderung weiter funktionieren. Zwei nennenswerte Verhaltensweisen:

  • Ihr User-Agent wird unverändert weitergeleitet. Senden Sie einen leeren und der Proxy rotiert einen realistischen UA für Sie.
  • Hop-by-Hop- und Proxy-Steuerungsheader (Host, Proxy-Authorization) werden entfernt — sie beschreiben den Proxy selbst, nicht den weitergeleiteten Request.
curl -H 'Accept-Language: en-US,en;q=0.9' \
     -H 'X-Custom-Header: My-Custom-Value' \
     -H 'User-Agent: MyCustomBrowser/1.0' \
     --cookie 'sid=abc123; cart=xyz789' \
     -x 'http://[email protected]:8012' \
     -k 'https://httpbin.org/anything'

Das obige Beispiel kommt mit allen vier Custom-Headern und beiden Cookies intakt am Ziel an. Um das Proxy-Verhalten zu überschreiben (Country, Device, Session, JS-Rendering, Scrapers usw.), verwenden Sie stattdessen die CrawlbaseAPI-* Header — diese werden vom Proxy interpretiert und erreichen das Ziel niemals.

Headless-Browser-Rendering

Smart Proxy wird von derselben Headless-Browser-Flotte wie die Crawling API betrieben. Um JavaScript auszuführen, clientseitig gerenderte SPAs zu erfassen oder Crawling API-Funktionen zu nutzen, die einen echten Browser erfordern (Screenshots, Scroll, Click-Selectors, Autoparse), übergeben Sie CrawlbaseAPI-Parameters: javascript=true als Header in Ihrem ausgehenden Request.

# Render with a headless browser, force a 2s wait, scroll to load lazy content
curl -H 'CrawlbaseAPI-Parameters: javascript=true&page_wait=2000&scroll=true' \
     -x 'http://[email protected]:8012' \
     -k 'https://spa.example.com/feed'

Verwenden Sie Ihr JavaScript token (nicht das Normal token), wenn javascript=true gesetzt ist — sie werden separat abgerechnet. Der vollständige Satz an Browser-Tier-Parametern (page_wait, scroll, css_click_selector, wait_for, Screenshots) ist über CrawlbaseAPI-Parameters erreichbar; siehe die JavaScript-Parameter-Referenz für die kanonische Liste.

Wann Smart Proxy vs. Crawling API verwenden

Smart Proxy und die Crawling API laufen auf demselben Netzwerk und bieten denselben Funktionsumfang — JS-Rendering, Anti-Bot-Bypass, Country-Routing, Device-Emulation, Sessions, Scrapers, async + Storage, alles davon. Die Wahl zwischen ihnen ist keine Frage der Fähigkeiten; es geht um die Form der Schnittstelle, welches Abonnement Sie haben und welches Concurrency-Tier dieses Abonnement bereitstellt.

Wählen Sie Smart Proxy, wenn …Wählen Sie die Crawling API (REST), wenn …
Sie den Client-Code nicht ändern können (Drittanbieter-Tool, Browser-Extension, Scrapy, ein bestehender Scraper)Sie von Grund auf neu bauen und explizite Kontrolle pro Request wünschen
Sie lieber einmal einen Proxy konfigurieren, als jeden Request auf einen neuen Endpoint umzuschreibenSie lieber URL und Parameter im Klartext als GET-Form für Logging / Debugging sehen
Ihr Abonnement auf dem Smart Proxy-Plan ist, mit eigenem Thread- / Concurrency-TierIhr Abonnement auf dem Crawling API-Plan ist, mit eigenem monatlichem Kontingent und Concurrency-Budget
Sie Crawlbase ohne Code-Änderungen vor eine bestehende Pipeline schalten möchtenSie möchten, dass eines der SDKs Retries, async Polling und Response-Parsing für Sie übernimmt

Alle Crawling API-Parameter sind von Smart Proxy aus über den CrawlbaseAPI-Parameters-Header erreichbar (siehe unten). Der Funktionsumfang ist identisch — wählen Sie die Schiene, die Ihr Abonnement und Ihre Integration bevorzugt.

Control-Header

Übergeben Sie Custom-Header mit dem Präfix CrawlbaseAPI- in Ihrem ausgehenden Request, um das Proxy-Verhalten zu steuern. Die drei Single-Purpose-Header unten sind komfortable Shortcuts; der vollständige Crawling API-Parametersatz ist über CrawlbaseAPI-Parameters erreichbar (nach der Tabelle dokumentiert).

CrawlbaseAPI-Country
ISO 3166optional
Erzwingt ein bestimmtes Land: US, GB, DE usw.
CrawlbaseAPI-Device
desktop | mobiledesktop
Emuliert die Geräteklasse.
CrawlbaseAPI-Session-Id
stringoptional
Bindet eine Session an dieselbe Exit-IP. Nützlich für mehrstufige Flows, die eine stabile Identität benötigen. Sessions leben ca. 30 Minuten.
CrawlbaseAPI-Parameters
query stringoptional
Der vollständige Crawling API-Parametersatz übergeben als ein einzelner mit Ampersand verbundener String. Alles, was Sie an einen REST-Request anhängen würden — javascript=true, page_wait=2000, scroll=true, store=true, &scraper=amazon-product-details, autoparse=true — funktioniert hier. Kombinieren Sie mehrere mit &: z. B. "javascript=true&country=US&store=true".

CrawlbaseAPI-Parameters verwenden

Die Single-Purpose-Header oben (Country, Device, Session-Id) sind Shortcuts für die häufigsten Steuerungen. Alles andere aus dem Crawling API-Parametersatz — JS-Rendering, Scroll, Click-Selectors, Scrapers, async + Webhooks + Storage, get_cookies, get_headers — ist über den CrawlbaseAPI-Parameters-Header erreichbar. Das Format ist derselbe Query-String, den Sie an einen REST-Aufruf anhängen würden:

# JS-rendered SPA, store the result, force US geo
curl -x 'http://YOUR_JS_TOKEN:@smartproxy.crawlbase.com:8012' \
     -H 'CrawlbaseAPI-Parameters: javascript=true&country=US&store=true&page_wait=2000' \
     -k 'https://spa.example.com/feed'

# Apply a scraper — same as &scraper=… on the REST endpoint
curl -x 'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012' \
     -H 'CrawlbaseAPI-Parameters: scraper=amazon-product-details' \
     -k 'https://www.amazon.com/dp/B0CHX2XFLN'

Konfliktauflösung: Wenn Sie sowohl einen Single-Purpose-Header (z. B. CrawlbaseAPI-Country: GB) als auch dasselbe Feld innerhalb von CrawlbaseAPI-Parameters übergeben, gewinnt der Single-Purpose-Header. Wählen Sie pro Request einen Stil, um das Verhalten vorhersehbar zu halten.

# Pin to a US session for a multi-step checkout flow
curl -x 'http://YOUR_TOKEN:@smartproxy.crawlbase.com:8012' \
     -H 'CrawlbaseAPI-Country: US' \
     -H 'CrawlbaseAPI-Session-Id: checkout-user-42' \
     -k 'https://shop.example.com/cart'

Fehler

Smart Proxy gibt standardmäßige HTTP-Responses zurück. Status-Codes folgen demselben Modell wie die Crawling API. Auth-Fehler (401, 402) werden vom Proxy selbst zurückgegeben; Site-Fehler (404, 500 usw.) kommen vom Ziel.