如何将VBA脚本中的XMLHTTP改为ServerXMLHTTP以启用代理?
把XMLHTTP替换为ServerXMLHTTP启用代理的解决方案
嘿Qharr,我来帮你搞定这个代理配置的问题~其实把MSXML2.XMLHTTP换成MSXML2.ServerXMLHTTP并启用代理的操作很直接,关键是要注意对象的正确调用顺序和版本指定,下面给你一步步拆解:
核心修改步骤
- 替换对象ProgID:XMLHTTP没有代理相关方法,必须改用
MSXML2.ServerXMLHTTP.6.0(指定6.0版本是为了兼容性和支持现代协议,避免旧版本的坑)。 - 调整代理方法调用时机:
setProxy和setProxyCredentials必须在.Open之后、.Send之前调用,这是很多人容易踩的细节坑。
修改后的完整代码
With CreateObject("MSXML2.ServerXMLHTTP.6.0") .Open "GET", urlx, False ' --- 代理配置部分(取消注释并填写你的代理信息)--- ' 2代表使用指定的代理服务器,其他类型可查官方文档 .setProxy 2, "proxy.net:8080" ' 如果代理需要账号密码验证,取消下面这行注释 .setProxyCredentials "proxy_login", "proxy_password" ' 可选:添加浏览器请求头,模拟真实访问(解决谷歌搜电话号码无结果的可能) .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" ' 可选:启用自动重定向(处理谷歌可能的3xx跳转) .Option(6) = True .send html.body.innerHTML = StrConv(.responseBody, vbUnicode) End With
额外提示(针对谷歌搜电话号码无结果的问题)
你提到的搜索电话号码无结果,大概率和自动化请求被谷歌识别有关,除了加User-Agent头,还可以尝试:
- 添加更多真实浏览器请求头,让请求更贴近自然访问:
.setRequestHeader "Accept-Language", "zh-CN,zh;q=0.9" .setRequestHeader "Referer", "https://www.google.com/" - 检查代理IP的地区:如果代理IP所在地区的谷歌搜索规则不同,也可能导致结果缺失,可以尝试切换到目标地区的代理。
内容的提问来源于stack exchange,提问作者Tahor Sui Juris
相关产品推荐
相关产品推荐

