Я немного изменил BlazeMonger для использования для объекта jQuery ..
var $list = $('li'),
$listRows = [];
for (var i = 0, len = $list.length, chunk = 4, n = 0; i < len; i += chunk, n++) {
$listRows[n] = $list.slice(i, i + chunk);
}
Попробуйте , а не , имея 400 открытых соединений в одном потоке. Или даже процесс, в этом отношении. Возможно, вы перегружаете прокси-серверы, поэтому они могут занести вас в черный список (безопасность отказа в обслуживании). Или ваша исходящая сеть может ограничивать количество открытых соединений.
Мне кажется, что у вас нет проблем с самим curl, но вы делаете слишком много соединений одновременно с прокси-серверами, если в соединениях отказано. Вы можете быть в черном списке навсегда или на какой-то период.
Проверьте это, запустив свой curl с текущего IP и сделайте stat: сколько соединений было установлено, сколько отказано, сколько истекло. Сделайте это несколько раз и наберите в среднем. Затем измените сервер на другой, который имеет другой IP-адрес, и проверьте, какая у вас там статистика. При первом запуске у вас должна быть намного лучшая статистика, которая, вероятно, если вы повторите тест на новом IP, станет только хуже. Хорошей идеей может быть не использовать весь пул прокси-серверов для подключения к статистике, а выбрать из них срез, проверить фактический IP-адрес и повторить эту проверку нового IP-адреса, поэтому, если причина в том, что вы злоупотребляете сервисом, вы не попадете в черный список все прокси, но все еще будут иметь следующую группу «нетронутых» прокси, чтобы проверить их на новом IP, если это действительно так. Помните, что даже если IP-адреса прокси находятся в разных местах, они могут принадлежать одному и тому же поставщику услуг. Вероятно, у него есть один список злоупотреблений для всех их прокси-серверов, поэтому, если вас плохо видят количество запросов, которые вы делаете в одной стране, вас могут заблокировать и в другой стране, даже до того, как вы подключитесь к прокси-серверу другой страны. [ 1126]
Если вы все еще хотите проверить, не скручивается ли это, вы можете настроить тестовую среду с несколькими подачами. Эту среду тестирования вы можете передать сопровождающему curl, чтобы он мог воспроизвести ошибку. Вы можете использовать docker и создавать 10, 20 или 100 прокси-серверов и подключаться к ним, чтобы увидеть, есть ли у curl проблема или нет.
вам понадобится докер , его можно установить на Win / Mac / Linux
один из прокси-образов для создания прокси
create сетевое учебное пособие для контейнеров (мост должен быть в порядке)
подключать контейнеры к сети - сеть
хорошо установить для каждого прокси-контейнера свои - ip
делают возможным для каждого прокси-контейнера читать конфигурацию и записывать журнал ошибок (так что вы можете узнать, почему они отключились, если это произойдет) с помощью mountig log / config files / 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
, сохранить этот файл и выполнить команду
[115 ], чтобы сделать его исполняемым.
Вы можете запустить его, чтобы перепроверить, все ли работает должным образом
./replicate.sh
и отправить сопровождающего curl для репликации среды, в которой у вас возникла проблема.
Если вы не хотите запускать прокси для запуска множества команд, таких как doker run, вы можете использовать вместо этого docker compose , который позволяет вам определять всю среду тестирования в одном файле. [1143 ]
Если вы запускаете много контейнеров, вы можете ограничить ресурсы, например память , которую использует каждый из них, может помочь вам в случае такого количества прокси