
Basándome en una larga búsqueda en la red, descubrí que SOCKS utiliza un protocolo de protocolo de enlace para informar al software proxy sobre la conexión que el cliente está intentando establecer y luego actúa de la manera más transparente posible, mientras que un proxy HTTP puede interpretar y reescribir encabezados. . Y también podemos usar ambos.
Lo que quiero saber es, ¿cómo podemos saber si el proxy es HTTP, SOCKS4, SOCKS4a o SOCKS5? Existe alguna manera de averiguarlo? Y puedo suponer que no podemos diferenciarlo según el número de puerto porque hay muchos números de puerto disponibles para cada uno de los tipos. Ayúdenme a diferenciar el proxy según HTTP o SOCKS.
Respuesta1
Pruebe este pequeño script en 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
Respuesta2
Podrías intentar usar la herramienta 'nmap' para intentar detectar la versión del servicio en ese puerto.
Por ejemplo:
nmap -sV -p{port} {server}
En el siguiente ejemplo, puede ver que es un proxy HTTP (a diferencia de 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