Proxy API
Сеть резидентных прокси со sticky-сессиями и единым плоским endpoint на одном порту. Используйте её, когда Smart AI Proxy недостаточно гибок: прямой доступ к пулу IP с ротацией под вашим контролем.
Более быстрая маршрутизация, обход блокировок на основе AI, меньше параметров конфигурации. Proxy Backconnect устарел, но существующие интеграции продолжают работать: отключение не запланировано.
Endpoint
# Username = your token + optional session/country qualifiers
# Password = blankБазовое использование
curl -x 'http://YOUR_TOKEN:@proxy.crawlbase.com:9000' \
'https://httpbin.org/ip'import requests
proxies = {
'http': 'http://YOUR_TOKEN:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN:@proxy.crawlbase.com:9000',
}
res = requests.get('https://httpbin.org/ip', proxies=proxies)
print(res.text)По умолчанию каждый запрос проходит через другой резидентный IP: чистая ротация.
Sticky-сессии
Чтобы привязать запросы к одному IP, добавьте идентификатор сессии к имени пользователя. Один и тот же идентификатор сессии возвращает один и тот же IP примерно 30 минут.
# Format: TOKEN-session-SESSION_ID
curl -x 'http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000' \
'https://shop.example.com/cart'import requests
# Format: TOKEN-session-SESSION_ID
proxies = {
'http': 'http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000',
}
res = requests.get('https://shop.example.com/cart', proxies=proxies)
print(res.text)const { fetch, ProxyAgent } = require('undici');
// Format: TOKEN-session-SESSION_ID
const dispatcher = new ProxyAgent('http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000');
const res = await fetch('https://shop.example.com/cart', { dispatcher });
console.log(await res.text());require 'net/http'
# Format: TOKEN-session-SESSION_ID
uri = URI('https://shop.example.com/cart')
http = Net::HTTP.new(uri.host, uri.port, 'proxy.crawlbase.com', 9000, 'YOUR_TOKEN-session-checkout42', '')
http.use_ssl = true
puts http.get(uri.request_uri).bodyТаргетинг по стране
# Format: TOKEN-country-XX
curl -x 'http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000' \
'https://www.amazon.de'
# Combine: country + session
curl -x 'http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000' \
'https://www.amazon.de/cart'import requests
# Format: TOKEN-country-XX
proxies = {
'http': 'http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000',
}
res = requests.get('https://www.amazon.de', proxies=proxies)
print(res.text)
# Combine: country + session
proxies = {
'http': 'http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000',
}
res = requests.get('https://www.amazon.de/cart', proxies=proxies)
print(res.text)const { fetch, ProxyAgent } = require('undici');
// Format: TOKEN-country-XX
const country = new ProxyAgent('http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000');
const home = await fetch('https://www.amazon.de', { dispatcher: country });
console.log(await home.text());
// Combine: country + session
const session = new ProxyAgent('http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000');
const cart = await fetch('https://www.amazon.de/cart', { dispatcher: session });
console.log(await cart.text());require 'net/http'
def fetch(url, user)
uri = URI(url)
http = Net::HTTP.new(uri.host, uri.port, 'proxy.crawlbase.com', 9000, user, '')
http.use_ssl = true
http.get(uri.request_uri).body
end
# Format: TOKEN-country-XX
puts fetch('https://www.amazon.de', 'YOUR_TOKEN-country-DE')
# Combine: country + session
puts fetch('https://www.amazon.de/cart', 'YOUR_TOKEN-country-DE-session-cart-1')Квалификаторы имени пользователя
Справочник всех доступных модификаторов имени пользователя, объединяемых через дефис.
| Формат | Эффект |
|---|---|
TOKEN | По умолчанию: случайный IP на каждый запрос |
TOKEN-country-XX | IP из страны XX (ISO 3166) |
TOKEN-session-NAME | Привязка к одному IP примерно на 30 мин |
TOKEN-country-XX-session-NAME | Sticky-сессия в пределах одной страны |
Статические IP и геолокализация
Когда нужно сохранить один и тот же выходной IP между несколькими запросами (многошаговые сценарии оформления заказа, вход в аккаунт + скрапинг, всё, что зависит от того, чтобы целевой сайт распознавал одного и того же клиента), Backconnect может закрепить статический IP и вернуть порт + время жизни сессии. Прокси будет удерживать этот IP привязанным к вашему token до тех пор, пока вы продолжаете использовать его в рамках окна сессии.
Endpoint для статических IP имеет ограничение 1 запрос в 5 минут на страну (или 1 в 5 минут в целом, если страна не указана). Кэшируйте порт, который получает ваш клиент: не запрашивайте его заново при каждом краулинге.
Статические IP и таргетинг по странам могут быть доступны не на всех тарифах Backconnect, а доступность стран зависит от уровня тарифа. Если вы получаете ответ unauthorized, проверьте свой тариф или обратитесь в поддержку, прежде чем повторять попытку.
Получить статический IP
Возвращает порт для использования с proxy.crawlbase.com, а также количество секунд, в течение которых сохраняется привязка. Таймер сессии автоматически продлевается, пока вы продолжаете отправлять трафик через этот порт в пределах окна.
curl 'https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN'
# Response
# { "port": 1234, "host": "proxy.crawlbase.com", "session_time": 10 }import requests
res = requests.get('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN')
print(res.json())const res = await fetch('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN');
console.log(await res.json());require 'net/http'
puts Net::HTTP.get(URI('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN'))Статический IP из конкретной страны
Передайте двухбуквенный код страны ISO 3166 (US, GB, DE, IT, RU, …), чтобы закрепить статический IP за этой географией. Если в запрошенной стране сейчас нет свободного порта, ответ содержит ошибку: подождите и повторите попытку с учётом ограничения по стране.
curl 'https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR'
# Response
# { "port": 4551, "host": "proxy.crawlbase.com", "session_time": 10 }import requests
res = requests.get('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR')
print(res.json())const res = await fetch('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR');
console.log(await res.json());require 'net/http'
puts Net::HTTP.get(URI('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR'))Whitelisting IP-адресов
Backconnect поддерживает whitelisting IP-адресов: исходящие IP вашего сервера могут аутентифицироваться на прокси без отправки token при каждом запросе. Полезно для конвейеров с фиксированными IP, где не хочется хранить учётные данные в коде, и это единственный способ использовать Backconnect из окружений, которые не могут передавать заголовок Proxy-Authorization.
Три endpoint'а, все под /proxy/whitelist_ips, различаются HTTP-методом. Изменения распространяются до 1 минуты.
Управление whitelist может быть доступно не на всех тарифах, и на каждом тарифе действует ограничение на количество одновременно whitelisted IP. Ответ unauthorized означает, что ваш уровень тарифа не включает эту функцию; обратитесь в поддержку для апгрейда.
Добавить IP в whitelist
curl -X POST 'https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123'import requests
res = requests.post('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123')
print(res.text)const res = await fetch('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123', {
method: 'POST',
});
console.log(await res.text());require 'net/http'
res = Net::HTTP.post(URI('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123'), nil)
puts res.bodyУдалить IP из whitelist
curl -X DELETE 'https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123'import requests
res = requests.delete('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123')
print(res.text)const res = await fetch('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123', {
method: 'DELETE',
});
console.log(await res.text());require 'net/http'
uri = URI('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123')
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.delete(uri.request_uri) }
puts res.bodyПросмотр whitelisted IP
Возвращает текущий список whitelisted IP для вашего токена в JSON.
curl 'https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN'import requests
res = requests.get('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN')
print(res.json())const res = await fetch('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN');
console.log(await res.json());require 'net/http'
puts Net::HTTP.get(URI('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN'))Backconnect vs Smart AI Proxy
| Smart AI Proxy | Backconnect | |
|---|---|---|
| Сценарий использования | Простой режим: авто-маршрутизация, обход анти-бот защиты | Прямой доступ к пулу IP, кастомная ротация |
| JS-рендеринг | Доступен | Нет (сырой прокси) |
| Авто-повтор | Да | Нет: обрабатывайте сами |
| Sticky-сессии | Через заголовок | Через имя пользователя |
| Лучше всего для | Большинства пользователей | Кастомных скраперов, сетевых исследований |
Backconnect представляет собой инструмент более низкого уровня. Если у вас нет конкретной причины использовать его, Smart AI Proxy даёт лучшие результаты с меньшими усилиями.