Подтвердить что ты не робот

Можно скручивать, чтобы имитировать постоянное (но незанятое) открытое соединение

У меня возникают проблемы с некоторыми подключениями Http Client, возвращающими NoHttpResponseException примерно 1 раз в 3 раза.

Моя гипотеза заключается в том, что брандмауэр закрывает незанятые соединения (нестандартно). Я хотел бы использовать завиток, чтобы имитировать это.

Я пытаюсь что-то вроде этого, но очень вероятно, что соединение никогда не простаивает

curl --keepalive-time 60 --limit-rate 128B $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL

Что бы я хотел, это нечто похожее на

curl $URL
sleep 10
curl $URL    
sleep 20
curl $URL 
sleep 30
curl $URL 

Где каждый раз (используя какую-то магию!) Curl использует одно и то же соединение.

Есть ли способ сделать это с помощью curl (или wget) и не нужно писать программу, чтобы сделать это

4b9b3361

Ответ 1

Нет такой вещи, которую вы не могли бы сделать с netcat.

REQ="GET / HTTP/1.1\nHost: localhost\nAccept: *\n\n"
(echo -ne $REQ; sleep 1; echo -ne $REQ; sleep 2; echo -ne $REQ) | netcat localhost 80

Измените путь к чему-то другому, чем/если вам это нужно...

Ответ 2

Нет, нет никакой возможности ни для завитки, ни для wget для этого. Когда инструмент выйдет, он закроет все соединения.

Я бы сказал, что лучший вариант для вас - использовать язык сценариев и, возможно, привязку libcurl, которая позволяет вам делать все завитки в более программном ключе. Таким образом, вы можете сделать запрос, спящий 10 секунд, а затем выполнить другой запрос, и он будет повторно использовать одно и то же соединение - насколько это возможно.

Есть привязки libcurl, доступные практически для любого языка программирования по вашему выбору, и даже если вы не используете libcurl, вы, вероятно, можете достичь этой функциональности, хотя, возможно, не так легко.

Ответ 3

Я не уверен, но если вы разрешите использовать опцию программирования, то многократное завивание в PHP может дать вам ожидаемый результат, и вам также не нужно будет использовать сон. Multi-curl будет запускать весь запрос в параллельном процессе.

Muti-Curl

Если вы хотите его использовать, я могу отправить вам код.