2

我写了一小段 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 的功能以及我们如何在脚本中自动化的任何提示????

谢谢并恭祝安康

4

1 回答 1

1

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

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

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

于 2013-01-10T16:07:40.420 回答