通过VBscript连接到SOCKS5代理

问题描述 投票:1回答:1

我已经尝试过并且无法使用下面的VBscript通过SOCKS5代理连接到URL。

我在Parameter is Incorrect线上得到xmlhttp.setProxyCredentials username, password错误,虽然凭据是正确的(检查5x)。

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
vbscript socks
1个回答
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操作使用http_proxy,而HTTPS协议使用名为other_proxy的代理。

您可以在代理绕过列表中列出本地已知的主机名或IP地址。此列表可以包含通配符,例如“*”,这些通配符会导致应用程序绕过代理服务器以获取适合指定模式的地址,例如“* .microsoft.com”或“* .org”。通配符必须是列表中最左侧的字符。例如,不支持“aaa。*”。要列出多个地址和主机名,请在代理绕过字符串中使用空格或分号分隔它们。如果指定宏,则该函数会绕过任何不包含句点的主机名。

进一步挖掘,InternetExplorer/WinINet supports SOCKS4, but not SOCKS4a nor SOCKS5。该博客文章还提到SOCKS不是微软从客户那里听到的。

到目前为止,我们听到的关于IE中对SOCKS的有限支持的反馈非常少。大多数用户对现有的CERN代理支持HTTP / HTTPS / FTP流量感到满意,对于需要完全套接字代理的情况,则使用VPN或RAS软件。请注意,也可以使用像Fiddler这样的代理作为上游SOCKSv4a服务器的网关/网桥。有关详细信息,请参阅此StackOverflow条目。

术语CERN-proxy只是一个HTTP代理,在“How To FTP with CERN-Based Proxy Using WinInet API”中有更多讨论

© www.soinside.com 2019 - 2024. All rights reserved.