Определение типа прокси-сервера: HTTP или SOCKS

Определение типа прокси-сервера: HTTP или SOCKS

На основе долгих поисков в сети я узнал, что SOCKS использует протокол рукопожатия, чтобы информировать прокси-программу о соединении, которое пытается установить клиент, а затем действует максимально прозрачно, тогда как HTTP-прокси может интерпретировать и перезаписывать заголовки. И мы можем использовать оба.

Я хочу узнать, как узнать, является ли прокси HTTP, SOCKS4, SOCKS4a или SOCKS5? Есть ли способ узнать? И я предполагаю, что мы не можем отличить его по номеру порта, потому что для каждого из типов доступно много номеров портов. Пожалуйста, помогите мне отличить прокси на основе HTTP или SOCKS.

решение1

Попробуйте этот небольшой скрипт на Python:

#!/usr/bin/python

import struct
import socket
import sys


try:
        server = sys.argv[1]
        port = sys.argv[2]
except:
        print "Usage: server port"

try:
        sen = struct.pack('BBB', 0x05, 0x01, 0x00)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(( server , int( port )  ))
        s.sendall(sen)
        data = s.recv(2)
        s.close()
        version, auth = struct.unpack('BB', data)
        print 'server : port  is  ', server, ':', port, '; varsion: ', version
except Exception as e:
        print e

решение2

Вы можете попробовать использовать инструмент «nmap», чтобы попытаться определить версию службы на этом порту.

Например:

nmap -sV -p{port} {server}

В примере ниже вы можете увидеть, что это HTTP-прокси (а не SOCKS):

my-desktop ~ # nmap -sV -p8080 192.168.3.40

Starting Nmap 6.40 ( http://nmap.org ) at 2016-02-23 10:46 CST
Nmap scan report for 192.168.3.40
Host is up (0.00036s latency).
PORT     STATE SERVICE    VERSION
8080/tcp open  http-proxy Squid http proxy 3.3.8

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.45 seconds

https://nmap.org/book/man-version-detection.html

Связанный контент