有人可以告诉我如何确定代理服务器是http还是socks吗?这是否基于端口号?它们有什么区别?
提前感谢。
如果以http为协议无法成功,尝试使用socks协议:curl -x socks://x.x.x.x:y check-host.net/ip
curl -x http://x.x.x.x:y check-host.net/ip
。
--user username:password
键或HTTP头部,或作为URI参数传递用户名和密码。这取决于具体情况。 - Alexander Zhak不,代理类型并非基于端口号。端口由网络管理员分配,可以是任何他们想要的数字。
你唯一的希望就是如果你的网络配置了某种类型的代理自动配置,以便在需要时向客户端提供特定的代理详细信息。
否则,没有办法查询代理本身。您必须事先知道代理的类型,以便正确地与其通信。
尝试这个脚本:
$ cat get_version.py
#!/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