Я использую для выполнения много синтаксических атак с ошибочными запросами на HTTP-серверах.По определению curl или wget не позволят вам сделать много плохой синтаксической работы.
Вы должны попытаться использовать низкоуровневый netcat + printf.
С printf вы пишете HTTP-запрос, и netcat будет управлятьсоединение через сокет (для соединений ssl вы можете заменить netcat на openssl_client).
Это будет выглядеть (для базового запроса):
printf 'GET /my/url?foo=bar HTTP/1.1\r\n'\
'Host: www.example.com\r\n'\
'\r\n'\
| nc -q 2 127.0.0.1 80
И для более сложного (повторный заголовок &старый синтаксис ops-fold заголовка, а не как писать символ% в printf):
printf 'GET /my/url?foo=bar&percent_char=%% HTTP/1.1\r\n'\
'Host: www.example.com\r\n'\
'x-foo-header: value1\r\n'\
'x-foo-header: value2\r\n'\
'x-foo-header: value3, value4\r\n'\
'x-foo-header:\t\tval5\r\n'\
' val6\r\n'\
'User-agent: tests\r\n'\
'\r\n'\
| nc -q 2 127.0.0.1 80
Как только вы привыкнете, это удовольствие, никаких ограничений.