Как проверить, работает ли прокси Socks5

36

Есть ли простой способ, предпочтительно с помощью терминала Linux, проверить, работает ли прокси-сервер Socks5?

tony_sid
источник

Ответы:

40

Если вы создали прокси-сервер самостоятельно, вы должны прежде всего проверить, существует ли открытый порт ( pаргумент работает только в том случае, если соответствующий процесс принадлежит вам или вы являетесь пользователем root):

netstat -tlnp

Это должно дать вам строку вроде: (У меня есть прокси localhost:8888)

tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN

Если вы нашли такую ​​линию или прокси не ваш, попробуйте отправлять через нее пакеты. Например, запрос веб-страницы с curl:

curl --socks5 localhost:8888 binfalse.de

Должен выводить некоторые вещи HTML. Надеюсь, что это помогает искать ошибки ;-)


Aux : Для моего примера я создал прокси через:

ssh -o ServerAliveInterval=60 -D8888 someone@somewhere

Замените someoneсвоим именем пользователя и somewhereвашим сервером назначения. Конечно, использование OpenSSH - это всего лишь один из множества возможных прокси-серверов socks5.

binfalse
источник
1
ssh: не удалось разрешить имя хоста где-либо: имя или служба неизвестна
tony_sid
6
Конечно, вы должны заменить someone@somewhereсвоим именем пользователя и вашим сервером, например ssh -D8888 YOURUSER@YOURHOST;-)
binfalse
В Windows команда netstat: nestat -an или netstat -an | grep LISTENесли у вас есть grep на вашем пути.
Эрик Аронести
Спасибо за curlподсказку. FWIW, curl также поддерживает --socks5-hostnameчто-то вроде, --socks5но не пытается локально разрешить имя хоста отправленного URL-адреса (что может быть очень полезно для подключения к интрасетям).
kostix
7

Чтобы получить curl для разрешения DNS на другой стороне, измените --socks5с помощью --socks5-hostname.

Смотрите man-страницу для получения дополнительной информации.

Синдре Свендбю
источник
Спасибо, не понимал, почему мой запрос не удался, пока не использовал это.
xamox
4

Следующая команда проверит, работает ли прокси Socks 5 localhost:8080:

timeout 5 curl -x socks5://localhost:8080 http://example.com/

В противном случае время ожидания истечет через 5 секунд. Если у вас нет timeoutкоманды, отбросьте ее.

kenorb
источник
2

Вы можете подключиться к netcat и следовать правилам RFC 1928, чтобы общаться с сервером. Вы должны были бы иметь возможность печатать и читать непечатаемые символы или записывать их в файл для дальнейшего изучения.

Например, чтобы проверить, является ли он сервером SOCKS5, и выяснить, какой из методов аутентификации no-auth, gssapi или usr + pwd он будет поддерживать, отправьте 0x05 0x03 0x00 0x01 0x02. Сервер SOCKS5, подготовленный для использования аутентификации usr + pwd, ответит 0x05 0x02.

Или вот как проверить, работает ли сервер SOCKS5 и работает ли no-auth (метод 0):

echo 050100 | xxd -p -r | netcat -o out.txt {server} {port}

После того, как вы прервете это, к концу out.txt он должен был выдать 0x05 0x00, если сервер поддерживает этот метод (0), или 0x05 0xFF, если это не так.

jchevali
источник