Протоколы и порты
Каждый продукт говорит и по HTTP, и по SOCKS5. Различие в том, какой порт отвечает и на чьей стороне резолвится DNS.
Порты по продуктам
На резидентке один порт обслуживает оба протокола: служба читает первые байты соединения и понимает, http это запрос или рукопожатие SOCKS. Протокол вы выбираете в клиенте, а не выбором порта.
На статических адресах SOCKS5 всегда на единицу выше HTTP. Если HTTP работает, а SOCKS5 нет, вы почти наверняка всё ещё смотрите на 50100.
Порты
Residential proxy.sotaproxy.com:10000 HTTP and SOCKS5
Static your-ip:50100 HTTP
your-ip:50101 SOCKS5
Mobile per modem, from the dashboardЧто выбрать
HTTP это более простой путь и то, что большинство библиотек поддерживает без дополнительных пакетов. Берите его, если не нужно чего-то, чего он не умеет.
SOCKS5 несёт любой протокол поверх TCP и поддерживает UDP, что важно для протоколов, которые вообще не HTTP. Он не анонимнее и не шифрует: оба свойства дают TLS на прикладном уровне, а не протокол прокси.
Правило socks5h
С socks5 имя резолвится на вашей машине, поэтому ваш резолвер видит каждого адресата, а география может сломаться, когда ближний резолвер вернёт ближний сервер. С socks5h имя уезжает к нам и резолвится здесь.
Пишите socks5h всегда, если нет конкретной причины поступить иначе. Эта одна буква и есть самая частая утечка в скрапинг-стеках.
С утечкой и без
# leaks the target list to your resolver
curl -x socks5://login:password@proxy.sotaproxy.com:10000 https://example.com
# resolves on our side
curl -x socks5h://login:password@proxy.sotaproxy.com:10000 https://example.com
# python needs the extra: pip install requests[socks]Поддержка в библиотеках
HTTP работает везде без дополнительных зависимостей. SOCKS5 обычно требует одну, и именно это требование чаще всего ломает настройку с первого раза.
Что нужно каждому стеку
Python requests pip install requests[socks], then socks5h://
Node socks-proxy-agent for SOCKS, https-proxy-agent for HTTP
curl built in, use socks5h:// for remote DNS
Scrapy HTTP out of the box, SOCKS needs a custom downloader
Playwright server field takes http:// or socks5://
Antidetect pick HTTP or SOCKS5 in the profile proxy form