Как аутентифицировать прокси Smartproxy: Белый список IP против имени пользователя/пароля и липкие сессии
Решите, что использовать: аутентификацию по имени пользователя/паролю или по белому списку IP, выберите ротационные или липкие сессии и проверьте ваш резидентный или датацентровый эндпоинт Smartproxy с помощью реальных HTTP- и SOCKS5-запросов, прежде чем автоматизировать что-либо.
Обзор
Smartproxy предоставляет резидентные и датацентровые прокси-эндпоинты через HTTP(S) и SOCKS5 (более 65 млн IP на резидентной стороне) по фиксированному месячному тарифу. Два ранних решения определяют, сработает ли ваша настройка с первого раза: какой режим аутентификации вы используете и должен ли запрос сохранять тот же выходной IP или переключаться на новый.
Это руководство охватывает оба решения и проверяет их с помощью реальных запросов из командной строки, чтобы вы могли убедиться, что эндпоинт работает, прежде чем подключать его к скраперу, трекеру позиций или профилю браузера.
Аутентификация: имя пользователя/пароль или белый список IP
Оба стиля аутентификации настраиваются в дашборде:
- Имя пользователя/пароль — учетные данные отправляются с каждым запросом. Работает с любой машины, контейнера или CI-раннера и выдерживает смену сети или адреса интернет-провайдера.
- Белый список IP — учетные данные не передаются с запросом, но ваш текущий публичный IP должен быть зарегистрирован. Это перестает работать в тот момент, когда ваш провайдер меняет ваш адрес или вы переходите в другую сеть.
Используйте имя пользователя/пароль, если у вас нет фиксированного офисного IP и инструмента, который вообще не может отправлять учетные данные прокси.
Типы сессий: ротационные или липкие
- Ротационные — запросы могут исходить с другого IP каждый раз. Это поведение по умолчанию, когда токен сессии не прикреплен, и это то, что вам нужно для крупномасштабного сбора, где количество запросов с одного IP должно оставаться низким.
- Липкие — один и тот же выходной IP сохраняется на время жизни токена сессии, что позволяет сохранять потоки с состоянием, такие как вход в систему, добавление в корзину и оформление заказа, на одном адресе.
Smartproxy кодирует детали сессии и таргетинга в имени пользователя прокси. Точный синтаксис параметров генерируется для вас и может меняться, поэтому всегда копируйте готовую строку из генератора эндпоинтов в дашборде, а не вводите ее по памяти. Приведенные ниже примеры показывают только общую форму.
Выбор между резидентными и датацентровыми эндпоинтами
| Резидентные | Датацентровые | |
|---|---|---|
| Пул | 65M+ IP | Меньшие, стабильные диапазоны |
| Скорость | Умеренная | Высокая |
| Лучше всего для | Гео-точный сбор, проверка рекламы, проверка цен | Высокообъемный краулинг устойчивых целей, внутреннее тестирование |
| Риск блокировки | Ниже, IP широко распределены | Выше, диапазоны хорошо известны |
Оба типа эндпоинтов достигаются одинаковым способом; различаются только хост, порт и учетные данные.
Шаги
-
Найдите свой эндпоинт и учетные данные в дашборде.
Войдите в систему, откройте страницу настройки прокси для приобретенного продукта и скопируйте хост и порт эндпоинта, ваше имя пользователя и пароль прокси, а также любую строку сессии или таргетинга, которую генератор добавляет в имя пользователя.
export SP_USER='your-proxy-username' export SP_PASS='your-proxy-password' export SP_ENDPOINT='host:port' # paste the exact value from the dashboardХраните учетные данные в переменных окружения или в менеджере секретов, а не фиксируйте их в скрипте.
-
Выберите режим аутентификации.
Имя пользователя/пароль — рекомендуемый вариант по умолчанию. Если вы предпочитаете белый список, запишите ваш текущий публичный IP и добавьте его в настройках аутентификации дашборда.
curl -sS https://ipinfo.io/ipПерепроверяйте и заново добавляйте этот адрес всякий раз, когда ваш провайдер меняет его; устаревшая запись в белом списке — самая распространенная причина внезапной ошибки
407. -
Проверьте ротационный HTTP-запрос.
Отправьте запрос через эндпоинт и убедитесь, что видите IP прокси, а не свой собственный.
curl -sS -x "http://${SP_USER}:${SP_PASS}@${SP_ENDPOINT}" https://ipinfo.io/jsonЗапустите его несколько раз в цикле, чтобы убедиться, что выходной IP действительно меняется между запросами.
for i in 1 2 3; do curl -sS -x "http://${SP_USER}:${SP_PASS}@${SP_ENDPOINT}" https://ipinfo.io/ip echo doneЕсли адрес никогда не меняется, проверьте, не встроен ли в ваше имя пользователя токен сессии.
-
Закрепите выходной IP с помощью липкой сессии.
Скопируйте имя пользователя для липкой сессии из генератора в дашборде (это ваше имя пользователя плюс идентификатор сессии) и экспортируйте его в отдельную переменную, чтобы вы могли переключаться между ротационной и липкой строками, не редактируя сами учетные данные.
export SP_USER_STICKY='your-username-with-session-parameters' # copy from the dashboard for i in 1 2 3; do curl -sS -x "http://${SP_USER_STICKY}:${SP_PASS}@${SP_ENDPOINT}" https://ipinfo.io/ip echo doneВсе три ответа должны показывать один и тот же выходной IP в течение времени жизни этого токена сессии.
-
Проверьте гео-таргетинг.
Таргетинг по стране, городу и региону также передается через сгенерированную строку имени пользователя. Убедитесь, что запрос попадает туда, куда вы ожидаете, прежде чем строить на этом рабочий процесс для конкретного рынка.
export SP_USER_DE='your-username-with-country-parameter' # copy from the dashboard curl -sS -x "http://${SP_USER_DE}:${SP_PASS}@${SP_ENDPOINT}" https://ipinfo.io/jsonПоле
countryв ответе должно совпадать с целевым значением, которое вы настроили. -
Проверьте SOCKS5-эндпоинт.
Используйте схему
socks5h://, чтобы разрешение DNS происходило на прокси, а не локально, что предотвращает утечки и блокировки на основе DNS.curl -sS -x "socks5h://${SP_USER}:${SP_PASS}@${SP_ENDPOINT}" https://ipinfo.io/jsonЕсли ваш клиент поддерживает только
socks5://, DNS разрешается локально; в скриптах предпочитайтеsocks5h. -
Переключитесь на датацентровый эндпоинт, когда важна пропускная способность.
Учетные данные и хосты датацентровых прокси перечислены отдельно в дашборде. Повторно запустите цикл проверки для хоста и порта датацентра; изменяются только значения эндпоинта, а не формат запроса.
export SP_DC_ENDPOINT='datacenter-host:port' curl -sS -x "http://${SP_USER}:${SP_PASS}@${SP_DC_ENDPOINT}" https://ipinfo.io/ip -
Используйте эндпоинт из Python.
Используйте те же переменные окружения, чтобы ничего не менялось при переходе из командной строки в скрипт.
import os import requests auth = f"{os.environ['SP_USER']}:{os.environ['SP_PASS']}@" endpoint = os.environ['SP_ENDPOINT'] proxies = { "http": f"http://{auth}{endpoint}", "https": f"http://{auth}{endpoint}", } response = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30) response.raise_for_status() print(response.json())Для липкой работы создайте второй словарь
proxiesизSP_USER_STICKYи используйте его для всей сессии. -
Добавьте логику повторных попыток и ротации.
Обрабатывайте ответы
429и5xxс короткой экспоненциальной задержкой и позволяйте ротационным сессиям естественным образом предоставлять новый IP при каждой попытке, вместо того чтобы повторять одну и ту же сессию.import time for attempt in range(4): try: response = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30) if response.status_code < 400: break except requests.RequestException: pass time.sleep(2 ** attempt)
Устранение неполадок
407 Proxy Authentication Required— имя пользователя или пароль неверны, строка сессии или таргетинга была вставлена не в то поле, или ваш IP в белом списке больше не соответствует вашему текущему адресу. Заново скопируйте строку из генератора в дашборде.- Учетные данные отклонены после успешной работы — пароли, содержащие
@,:,/или#, должны быть URL-кодированы внутри URL прокси (@становится%40,:становится%3A). Предпочитайте пароль без специальных символов, если ваш инструмент не может их кодировать. curl: (7) Failed to connect— хост или порт неверны, или вы скопировали резидентный эндпоинт в датацентровый слот (или наоборот). У каждого продукта свой хост и порт.- Каждый запрос возвращает один и тот же IP — в имени пользователя все еще присутствует токен липкой сессии, или вы используете набор учетных данных для липкой сессии вместо ротационного.
- Липкая сессия меняет IP в середине рабочего процесса — время жизни сессии истекает. Начните новый токен сессии намеренно и повторно аутентифицируйтесь, вместо того чтобы предполагать, что старый сохранится бесконечно.
- Запросы истекают только на SOCKS5 — клиент может не поддерживать удаленный DNS. Переключитесь на
socks5h://или используйте HTTP-эндпоинт для этого инструмента. - Аутентификация по белому списку периодически не работает — мобильные сети и домашние подключения меняют публичные IP. Используйте имя пользователя/пароль для автоматических задач.
Итог
Настройка Smartproxy сводится к двум выборам и одной привычке. Выберите имя пользователя/пароль, если у вас нет действительно статического IP, и выберите ротационные сессии для сбора данных или липкие сессии для потоков с состоянием. Привычка — копировать эндпоинт и строку имени пользователя прямо из генератора в дашборде, потому что параметры сессии и гео-таргетинга находятся в этой строке. Проверьте ротационный путь, липкий путь, путь SOCKS5 и хост датацентра с помощью коротких циклов curl выше, прежде чем направлять на них скрапер или трекер позиций.