Я обнаружил с wireshark , что при разговоре с прокси - curl использует GET в то время как proxychains использует CONNECT Разница объясняется здесь: в чем разница между «ПОДКЛЮЧИТЬ» и «ПОЛУЧИТЬ HTTPS»?
В другом ответе упоминается цепочка прокси с CONNECT . Я думаю, что GET не может быть цепочкой, поэтому proxychains использует CONNECT .
Теперь в статье в Википедии о HTTP-туннелировании говорится следующее:CONNECT:
Не все прокси-серверы HTTP поддерживают эту функцию, и даже те, которые поддерживают ее, могут ограничивать поведение (например, разрешать только подключения к стандартному HTTPS-порту 443 или блокировать трафик, который не является SSL).
Действительно, Siki Cache Wiki утверждает (выделение мое):
Важно отметить, что протоколы, проходящие через CONNECT , не ограничиваются теми протоколами, которые обычно обрабатывает Squid. Буквально все, что использует двустороннее TCP-соединение, может быть передано через туннель CONNECT . Вот почему списки ACL по умолчанию для Squid начинаются с deny CONNECT !SSL_Ports и почему у вас должна быть очень веская причина размещать над ними любые типы разрешающих правил.
Я предполагаю, что ваш squid.conf содержит такую строку:
http_access deny CONNECT !SSL_Ports
Я нашел ответ, который говорит, что достаточно прокомментировать эту строку. Проверено, все работает. Однако, если вы не хотите пробивать такую большую дыру в вашем прокси, попробуйте добавить следующие три строки в ваш squid.conf:
acl myserver dst 192.168.2.4
acl myport port 80
http_access allow CONNECT myserver myport
# the original uncommented line must be below, like this
http_access deny CONNECT !SSL_Ports