Мне кажется, что у вас нет проблем с самим curl, но вы делаете слишком много соединений одновременно с прокси-серверами, если в соединениях отказано.Вы можете быть внесены в черный список навсегда или на определенный период.
Проверьте это, запустив свой локатор с текущего IP-адреса, и выполните статистику: сколько соединений было установлено, сколько отказано, сколько истекло время ожидания.Сделайте это несколько раз и наберите в среднем.Затем измените сервер на другой, который имеет другой IP-адрес, и проверьте, какая у вас там статистика.При первом запуске у вас должна быть намного лучшая статистика, которая, вероятно, если вы повторите тест на новом IP, станет только хуже.Хорошей идеей может быть не использовать весь пул прокси-серверов для подключения к статистике, а выбрать из них срез, проверить фактический IP-адрес и повторить эту проверку нового IP-адреса, поэтому, если причина в том, что вы злоупотребляете сервисом, вы не попадете в черный списоквсе прокси, но все еще будут иметь следующую группу «нетронутых» прокси, чтобы проверить их на новом IP, если это действительно так.Помните, что даже если IP-адреса прокси находятся в разных местах, они могут принадлежать одному и тому же поставщику услуг.Вероятно, у него есть один список злоупотреблений для всех их прокси-серверов, поэтому, если вас плохо видят количество запросов, которые вы делаете в одной стране, вас могут заблокировать и в другой стране, даже до того, как вы подключитесь к прокси-серверу другой страны.
Если вы все еще хотите проверить, не скручивается ли это, вы можете настроить тестовую среду с несколькими подачами.Эту среду тестирования вы можете передать сопровождающему curl, чтобы он мог воспроизвести ошибку.Вы можете использовать docker и создавать 10, 20 или 100 прокси-серверов и подключаться к ним, чтобы узнать, есть ли у curl проблема.
вам понадобится docker , его можно установить на Win /Mac / Linux
один из образа прокси для создания прокси
создание сети учебное пособие для контейнеров (мост должен быть в порядке)
подключение контейнеров к сети - сеть
хорошо установить для каждого прокси-контейнера их - ip
сделать для каждого прокси-контейнера возможным чтение конфигурации и запись журнала ошибок (так что вы можете прочитать, почему ониотключить, если это произойдет) с помощью mountig журнала ошибок / файлов конфигурации / direcotires с - томом
, и все прокси-контейнеры должны быть запущены
, вы можете подключиться к прокси, которыйработает внутри контейнера двумя способами.если вы хотите, чтобы curl находился за пределами этих контейнеров, вам необходимо открыть с помощью -p порты этих прокси-серверов из контейнера во внешний мир (curl в вашем случае).
или
вы можете использовать другой контейнерный образ с linux + curl.Например, Alpine linux + curl и подключите его к той же сети, что и с прокси.Если вы делаете это, вам не нужно публиковать (выставлять) порты прокси и не нужно думать о том, какое количество прокси-портов я должен предоставлять для этого конкретного прокси.
на каждом шаге, который вы можете выполнитькоманда
docker ps -a
, чтобы увидеть все контейнеры и их состояние.
, чтобы остановить и удалить все контейнеры (не изображения, из которых они приходят, а запущенные контейнеры), если у вас возникли ошибки сконтейнер, который вышел.
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
или чтобы остановить и удалить из списка определенный контейнер
docker stop <container-id>
docker rm <container-id>
, чтобы увидеть все контейнеры, которые подключены к мостовой сети (по умолчанию)
docker network inspect bridge
Если вы подтвердите, что действительно существует проблема с подключением к прокси, которые находятся на вашем локальном компьютере, то это то, что сопровождающий curl может воспроизвести.
просто поместите все команды, как указано выше, чтобы создать все прокси, соединяющие ихк сети и т. д. в файле, например, сценарий replicate.sh
, начинающийся с
#!/bin/sh
and your comands here
, сохраните этот файл и выполните команду
chmod +x ./replicate.sh
для mСделайте его исполняемым.
Вы можете запустить его, чтобы дважды проверить, все ли работает должным образом
./replicate.sh
и отправить сопровождающего curl в среду репликации, в которой возникла проблема.
Если вы не хотите запускать прокси для запуска множества команд, таких как doker run, вы можете использовать docker compose , что позволяет вам определять всю среду тестирования в одном файле.
Если вы запускаете много контейнеров, вы можете ограничить ресурсы, например память , каждый из которых потребляет, может помочь вам в случае такого количества прокси