Browser 使用VBscript设置IE代理值

Browser 使用VBscript设置IE代理值,browser,vbscript,proxy,Browser,Vbscript,Proxy,我已经写了一小段vb脚本来设置代理设置 现在脚本可以正常运行,并且可以设置注册表值。如果我使用Internet Explorer,则不存在任何问题,即浏览器使用了正确的代理设置(如在输入对话框中输入的,或“无代理”(如果取消)服务器 但是,当使用Firefox或Chrome时(使用不同的版本进行了尝试),浏览器的行为会异常。有时会使用正确的代理服务器,但有时浏览器会显示一条消息,表示代理服务器拒绝连接(基本上无法访问代理服务器)。此外,这种行为是随机的,它不是基于浏览器的空闲时间或请求/单击

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



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

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

我所做的另一个分析是,每当出现这种情况时,如果我打开internet explorer的“选项”对话框并单击LAN设置(可以更改代理),我会注意到代理设置设置是正确的。如果我只需单击Cancel并退出对话框,浏览器就会开始使用正确的设置

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


感谢并问候

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

  • IE将其存储在注册表中
  • firefox将其存储在(某些文件中)%appdata%\mozilla\firefox\profiles\
  • chrome也使用与IE相同的位置,AFAIK
  • 然而,在其他浏览器中可能有一个选项,我们可以要求它使用系统级代理(在IE中设置)。FF的linux版本具有此功能。

    即使这样,您也需要重新启动浏览器,以便它再次读取代理服务器值。通常在启动时读取,仅使用对话框手动更新。浏览器程序员通常不希望用户使用脚本更改代理。(不过,我们还是要这样做:-)

    感谢Anish分享信息。Firefox的设置设置为“使用系统代理”,我相信它指向IE设置。此外,代理是在任何浏览器运行之前设置的(启动后延迟5秒),因此我们可以排除在设置代理后重新启动浏览器的可能性。有趣的是,一旦查看了代理的IE设置(未做任何更改),浏览器就会开始指向正确的设置,之后一切都会正常工作。我认为Windows在内存中存储了一些指示要使用的代理设置的内容。有什么想法吗@AnishSane?嗯。。。看起来代理信息已缓存。。。应该有一些windows操作系统级别的调用,这将模拟刷新该缓存。但是,我没有意识到这一点。考虑到这一点,您可以跟踪
    control inetcpl.cpl
    …用新的代理设置刷新页面,而不关闭IE并再次运行以获取新的代理设置。您好,Zaka,当脚本运行时(在windows登录时),没有浏览器正在运行。浏览器的启动要晚得多。虽然这不能被标记为答案,但是firefox和chrome的干净安装修复了这个问题。
    '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