我尝试使用以下VB脚本通过SOCKS5代理连接到URL失败,并失败。
尽管凭据正确(检查5倍),但在Parameter is Incorrect
行出现了xmlhttp.setProxyCredentials username, password
错误。
Function GetResult(url As String) As String
Dim xmlhttp
Dim ret As String
Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")
xmlhttp.setProxy 2, proxy
xmlhttp.Open "GET", url, False
xmlhttp.setProxyCredentials username, password
xmlhttp.send
ret = xmlhttp.responseText
GetResult = ret
End Function
答案 0 :(得分:0)
ServerXMLHTTP uses WinHTTP on the backend。因此,您仅限于supported by WinHTTP的代理,这些代理仅包括HTTP和HTTPS代理,而不包括SOCKS5。
您可以用空格分隔的字符串指定代理。代理列表可以包含用于访问代理的端口号。要列出特定协议的代理,字符串必须遵循以下格式:protocol = {http://proxy_name}。有效协议是HTTP和HTTPS。例如,要列出HTTP代理,有效字符串是http = {http://http_proxy_name:80,其中http_proxy_name是代理服务器的名称,而80是访问代理必须使用的端口号。如果代理使用该协议的默认端口号,则可以忽略该端口号。如果代理名称是单独列出的,则可以将其用作没有指定代理的任何协议的默认代理。例如,http = {http://http_proxy other_proxy使用http_proxy进行任何HTTP操作,而HTTPS协议使用名为other_proxy的代理。
您可以在代理旁路列表中列出本地已知的主机名或IP地址。此列表可以包含通配符(例如“ *”),这些通配符使应用程序绕过适合指定模式(例如“ * .microsoft.com”或“ * .org”)的地址的代理服务器。通配符必须是列表中最左边的字符。例如,不支持“ aaa。*”。要列出多个地址和主机名,请在代理绕过字符串中用空格或分号分隔它们。如果指定了宏,则该函数会绕过任何不包含句点的主机名。
进一步挖掘InternetExplorer/WinINet supports SOCKS4, but not SOCKS4a nor SOCKS5。该博客文章还提到SOCKS并不是Microsoft从客户那里听到的。
到目前为止,关于IE中对SOCKS的有限支持的反馈很少。大多数用户对HTTP / HTTPS / FTP通信的现有CERN代理支持感到满意,并且在需要完全套接字代理的情况下,可以使用VPN或RAS软件。请注意,也可以使用Fiddler之类的代理作为到上游SOCKSv4a服务器的网关/网桥。有关详细信息,请参见此StackOverflow条目。
术语CERN-proxy
只是一个HTTP代理,在“ How To FTP with CERN-Based Proxy Using WinInet API”中有更多讨论