Docs
Войти

Endpoint

PROXYsmartproxy.crawlbase.com:8012
# Username = ваш token. Password = пустой.
# Поддерживаются как HTTP, так и HTTPS целевые ресурсы. Для HTTPS-целей используйте режим HTTPS-прокси.

Быстрый старт

Установите Smart Proxy в качестве прокси в вашем HTTP-клиенте. Это вся настройка.

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

Smart Proxy перехватывает TLS-соединения, чтобы добавить прокси-заголовки. Ваш клиент увидит сертификат Crawlbase вместо сертификата целевого сайта, поэтому установите verify=False / InsecureSkipVerify: true / эквивалент. Соединение от Crawlbase до целевого сайта по-прежнему верифицируется.

POST-запросы

Smart Proxy перенаправляет POST-запросы к цели так же, как и любой другой HTTP-метод. Установите прокси в вашем клиенте и выполните POST, как обычно — прокси сохранит ваш метод, заголовки и body. Примеры ниже охватывают две формы тела, которые используют большинство клиентов: form-encoded и 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

Передача заголовков и cookies

Smart Proxy передаёт большинство заголовков и cookies из вашего исходящего запроса целевому ресурсу, поэтому существующие клиенты продолжают работать без изменений. Два важных поведения:

  • Ваш User-Agent передаётся как есть. Отправьте пустой — и прокси подставит реалистичный UA с ротацией.
  • Hop-by-hop и заголовки управления прокси (Host, Proxy-Authorization) удаляются — они описывают сам прокси, а не пересылаемый запрос.
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'

Пример выше доходит до целевого ресурса со всеми четырьмя пользовательскими заголовками и обоими cookies в неизменном виде. Чтобы переопределить поведение прокси (страна, устройство, сессия, JS-рендеринг, скраперы и т. д.), используйте вместо них заголовки CrawlbaseAPI-* — они интерпретируются прокси и никогда не достигают цели.

Рендеринг через headless-браузер

Smart Proxy работает на той же инфраструктуре headless-браузеров, что и Crawling API. Чтобы выполнять JavaScript, захватывать клиентски рендеренные SPA или применять функции Crawling API, требующие настоящего браузера (скриншоты, прокрутка, click-селекторы, autoparse), передайте CrawlbaseAPI-Parameters: javascript=true в качестве заголовка вашего исходящего запроса.

# 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'

Используйте ваш JavaScript token (а не Normal token), когда установлен javascript=true — они тарифицируются раздельно. Полный набор параметров браузерного уровня (page_wait, scroll, css_click_selector, wait_for, скриншоты) доступен через CrawlbaseAPI-Parameters; канонический список см. в справочнике параметров JavaScript.

Когда использовать Smart Proxy, а когда Crawling API

Smart Proxy и Crawling API работают в одной и той же сети и предоставляют одинаковый набор возможностей — JS-рендеринг, обход анти-бот защиты, маршрутизация по странам, эмуляция устройств, сессии, скраперы, async + storage, всё это. Выбор между ними — не про возможности; он про форму интерфейса, тип вашей подписки и какой уровень параллелизма эта подписка предоставляет.

Выберите Smart Proxy, когда…Выберите Crawling API (REST), когда…
Вы не можете менять клиентский код (стороннее ПО, расширение браузера, Scrapy, существующий скрапер)Вы строите с нуля и хотите явный контроль над каждым запросом
Вы предпочитаете один раз настроить прокси, а не переписывать каждый запрос на новый endpointВы предпочитаете видеть URL и параметры в виде обычного GET для логирования / отладки
Ваша подписка — на план Smart Proxy с собственным уровнем потоков / параллелизмаВаша подписка — на план Crawling API с собственной месячной квотой и бюджетом параллелизма
Вы хотите подключить Crawlbase к существующему пайплайну без единого изменения в кодеВы хотите, чтобы один из SDK обрабатывал ретраи, async-поллинг и парсинг ответа за вас

Все параметры Crawling API доступны из Smart Proxy через заголовок CrawlbaseAPI-Parameters (см. ниже). Набор возможностей одинаковый — выбирайте дорожку, которая подходит вашей подписке и форме интеграции.

Управляющие заголовки

Передавайте пользовательские заголовки с префиксом CrawlbaseAPI- в вашем исходящем запросе, чтобы управлять поведением прокси. Три однозадачных заголовка ниже — это удобные сокращения; полный набор параметров Crawling API доступен через CrawlbaseAPI-Parameters (документировано после таблицы).

CrawlbaseAPI-Country
ISO 3166опционально
Принудительно задать конкретную страну: US, GB, DE и т. д.
CrawlbaseAPI-Device
desktop | mobiledesktop
Эмулирует класс устройства.
CrawlbaseAPI-Session-Id
stringопционально
Закрепляет сессию за тем же выходным IP. Полезно для многошаговых сценариев, требующих стабильной идентичности. Сессии живут ~30 минут.
CrawlbaseAPI-Parameters
query stringопционально
Полный набор параметров Crawling API, передаваемый одной строкой, объединённой амперсандами. Всё, что вы добавили бы к REST-запросу — javascript=true, page_wait=2000, scroll=true, store=true, &scraper=amazon-product-details, autoparse=true — работает здесь. Комбинируйте несколько через &: например, "javascript=true&country=US&store=true".

Использование CrawlbaseAPI-Parameters

Однозадачные заголовки выше (Country, Device, Session-Id) — это сокращения для самых распространённых настроек. Всё остальное из набора параметров Crawling API — JS-рендеринг, прокрутка, click-селекторы, скраперы, async + webhooks + storage, get_cookies, get_headers — доступно через заголовок CrawlbaseAPI-Parameters. Формат — та же query-string, которую вы добавили бы к REST-вызову:

# 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'

Разрешение конфликтов: если вы передаёте одновременно однозадачный заголовок (например, CrawlbaseAPI-Country: GB) и то же поле внутри CrawlbaseAPI-Parameters, побеждает однозадачный заголовок. Выбирайте один стиль на запрос, чтобы поведение оставалось предсказуемым.

# 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'

Ошибки

Smart Proxy возвращает стандартные HTTP-ответы. Коды статусов следуют той же модели, что и Crawling API. Ошибки авторизации (401, 402) возвращаются самим прокси; ошибки сайта (404, 500 и т. д.) приходят от целевого ресурса.