檢測代理是 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

相關內容