Я могу легко использовать Netcat (или Socat) для захвата трафика между моим браузером и конкретным хостом: портом.
Но для Linux существует ли какой-либо аналог командной строки Squid-подобного HTTP-прокси, который я могу использовать для захвата трафика между моим HTTP-клиентом (браузером или программой командной строки) и любым произвольным портом host: port?
command-line
proxy
http
squid
Гарри
источник
источник
Ответы:
И Perl, и Python (и, возможно, также Ruby) имеют простые наборы, которые можно использовать для быстрого создания простых HTTP-прокси.
В Perl используйте HTTP :: Proxy . Вот 3-строчный пример из документации. Добавьте фильтры, чтобы фильтровать, регистрировать или переписывать запросы или ответы; см. документацию для примеров.
В Python используйте SimpleHTTPServer . Вот пример кода, слегка адаптированный из effbot . Адаптируйте
do_GET
метод (или другие) для фильтрации, записи или перезаписи запросов или ответов.источник
Возможно, это не лучшее решение, но если вы используете какой-либо прокси-сервер, у него будет конкретное
host:port
решение, поэтому решение netcat все еще работает, хотя вам придется выбирать метаданные прокси-сервера, чтобы разобраться в этом.Самый простой способ сделать это - использовать любой случайный прокси-сервер для анонимизации и просто направить весь трафик
netcat
. (Т.е. установите прокси вашего браузера наlocalhost:port
и затем перенаправьте данные на реальный прокси.)Если вы хотите иметь локальный прокси-сервер,
ssh -D <port> localhost
возможно, самый простой вариант - прокси-сервер SOCKS5 . Очевидно, что вы должны указать браузеру использовать прокси «socks» вместо прокси «http».Итак, что-то вроде этого (при условии, что ваша локальная машина принимает входящие ssh-соединения):
Естественно, это сработает только для одной попытки подключения к браузеру, а затем завершится, и я не пытался переслать возвращаемые данные в браузер, поэтому вам понадобится ваше полное
netcat
решение.источник
root
пользователем и т. Д.ssh -fN -D ...
запускает прокси SOCKS5 наlocalhost
порт8000
, но что делаетnc -l ...
? И на какой порт мой браузер должен указывать:8000
или8080
?nc
команды принимают весь трафик с порта 8080 и направить его в 8000. Я не обеспечивает полноеnetcat
решение , потому что ваш пост предложил вы уже знали , как сделать эту часть.