【问题标题】:Setting IE proxy values using VBscript使用 VBscript 设置 IE 代理值
【发布时间】:2013-01-10 06:08:19
【问题描述】:

我写了一小段vb脚本来设置代理设置


'begin script
Option Explicit
Dim valUserIn
Dim objShell, RegLocate
Set objShell = WScript.CreateObject("WScript.Shell")
RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"
objShell.RegWrite RegLocate,"0","REG_DWORD"
WScript.Sleep(5000)
valUserIn = Inputbox("Enter the Proxy server you want to use.","Proxy Server Required","proxygate.mydomain.com:8080")
if valUserIn = "" then
    RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"
    objShell.RegWrite RegLocate,"0","REG_DWORD"
    'MsgBox "No proxy mode"
else
    RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer"
    objShell.RegWrite RegLocate,valUserIn,"REG_SZ"
    RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"
    objShell.RegWrite RegLocate,"1","REG_DWORD"
    'MsgBox "Proxy mode: " & valUserIn
end if
WScript.Quit
'end script

现在脚本可以正常运行并且可以设置注册表值了。如果我使用 Internet Explorer,则没有问题,即浏览器使用正确的代理设置(如在输入对话框中输入的那样,如果取消,则为“无代理”)服务器。

但是,当使用 Firefox 或 Chrome(尝试使用不同版本)时,浏览器会出现异常行为。有时会使用正确的代理服务器,但有时浏览器会显示代理服务器拒绝连接的消息(基本上它无法访问代理服务器)。而且这种行为是随机的,它不是基于浏览器的空闲时间或请求/点击的数量。

我所做的另一项分析是,每当发生这种情况时,如果我打开 Internet Explorer 的选项对话框并单击 LAN 设置(可以更改代理),我会注意到代理设置已正确设置。如果我只是单击取消并退出对话框,浏览器将开始使用正确的设置。

关于 Internet Explorer 的功能以及我们如何在脚本中实现自动化的任何提示????

感谢和问候

【问题讨论】:

  • 如何用新的代理设置刷新页面而不关闭 IE 并再次运行以获取新的代理设置。
  • 您好 Zaka,脚本运行时(在 Windows 登录时)没有运行浏览器。浏览器启动时间要晚得多。虽然这不能被标记为答案,但全新安装的 firefox 和 chrome 解决了这个问题。

标签: browser vbscript proxy


【解决方案1】:

不同的浏览器将代理信息存储在不同的位置。

  1. IE 将其存储在注册表中。
  2. firefox 将其存储在(某些文件中)%appdata%\mozilla\firefox\profiles\
  3. chrome 也使用与 IE、AFAIK 相同的位置。

但是,可能在其他浏览器中有一个选项,我们可以要求它使用系统级代理(在 IE 中设置)。 linux版本的FF有这个。
即使这样,您也需要重新启动浏览器,以便它再次读取代理服务器值。通常它是在启动时读取的,并且只能使用对话框手动更新。浏览器程序员通常不希望用户使用脚本更改代理。 (但是,我们这样做:-))

【讨论】:

  • 感谢 Anish 分享信息。 Firefox 的设置设置为“使用系统代理”,我相信这指向 IE 设置。而且,代理是在任何浏览器运行之前设置的(启动后延迟5秒),所以我们可以排除设置代理后浏览器重启的可能性。有趣的是,一旦查看了代理的 IE 设置(未进行任何更改),浏览器就会开始指向正确的设置,之后一切正常。我认为 Windows 在内存中存储了一些东西,表明要使用的代理设置。有什么想法@AnishSane ??
  • 嗯...看起来代理信息被缓存了...应该有一些Windows操作系统级别的调用,这将模拟刷新缓存。但是,我不知道。作为一个想法,您可以跟踪control inetcpl.cpl进行的系统调用...
猜你喜欢
  • 2011-06-23
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2012-02-16
  • 2012-11-13
  • 2023-04-10
相关资源
最近更新 更多