Smart Proxy
Единый ротируемый прокси-endpoint. Настройте его один раз в вашем HTTP-клиенте, и каждый ваш запрос будет маршрутизироваться через сеть Crawlbase — без переписывания API, без специального SDK.
Endpoint
# 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).bodypackage 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))
}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.bodypackage 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 (документировано после таблицы).
US, GB, DE и т. д.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 и т. д.) приходят от целевого ресурса.

