Я обнаружил с 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