метод curl CONNECT без пути (вместо имени хоста и порта назначения) - PullRequest
0 голосов
/ 03 августа 2020

Я хочу протестировать прокси-сервер. Чтобы сделать https-запрос, браузер заранее отправляет метод CONNECT (например, как Firefox, когда указан прокси). Я не могу достичь / отправить тот же результат в curl:

Следующее имеет root sla sh /www.example.com:443:

curl -X CONNECT http://proxy_host:proxy_port/www.example.com:443

Следующее не будет работать (без sla sh):

curl -X CONNECT http://proxy_host:proxy_portwww.example.com:443

Я хочу не следующее:

curl -X CONNECT http://proxy_host:proxy_port/some_path

Итак, первая строка данных HTTP должна быть CONNECT www.example.com:443 HTTP/1.1, но не CONNECT /www.example.com:443 HTTP/1.1 как в этом случае отправляет curl.

Возможно, этот вопрос также связан каким-то образом, если бы я знал, как не отправлять путь.

ПРИМЕЧАНИЕ ! Я не хочу использовать curl -x http://proxy_host:proxy_port https://www.example.com, потому что этот параметр / flag -x не работает с настраиваемыми сертификатами SSL --cacert ... --key ... --cert ....

Есть идеи, как отправлять данные простого заголовка или не указывать path или укажите в качестве пути хост и порт?

1 Ответ

0 голосов
/ 03 августа 2020

(-X просто заменяет строку в запросе, поэтому, конечно, установка его на CONNECT не приведет к правильному запросу CONNECT и, конечно же, не заставит curl обрабатывать его правильно.)

curl будет делать CONNECT сам по себе при подключении к серверу TLS через прокси-сервер HTTP, и даже если вы утверждаете, что -x нарушает параметры сертификата, это неверное утверждение. --cacert и другие параметры работают одинаково, даже если соединение выполняется через прокси-сервер HTTP.

Вы также можете заставить curl выполнять ПОДКЛЮЧЕНИЕ через прокси-сервер HTTP (S) для других протоколов, используя -p, --proxytunnel - также в сочетании с -x.

...