프록시가 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

관련 정보