【问题标题】:firefox proxy settings via command line通过命令行设置firefox代理
【发布时间】:2010-10-25 00:10:42
【问题描述】:

如何在 windows xp/2k 上通过命令行更改 Firefox 代理设置?

谢谢

【问题讨论】:

    标签: firefox command-line


    【解决方案1】:

    代理设置存储在用户的 Firefox 配置文件中的 prefs.js 文件中。

    Firefox 配置文件目录和文件的路径是:

    %APPDATA%\Mozilla\Firefox\Profiles\7b9ja6xv.default\prefs.js

    其中“7b9ja6xv”是一个随机字符串。但是,默认配置文件的目录始终以“.default”结尾。无论如何,大多数时候只会有一个配置文件。

    你所追求的设置被命名为“network.proxy.http”和“network.proxy.http_port”。

    现在这取决于您能够/准备使用什么技术来更改文件。

    P.S.:如果这是关于通过登录脚本或类似方式更改一组用户的代理设置,我建议研究使用自动代理发现 (WPAD) 机制的可能性。您永远不必再次更改用户计算机上的代理配置。

    【讨论】:

    • 即使使用 WPAD,您也需要更改 network.proxy.type。看我的回答below
    【解决方案2】:

    我不认为你可以。但是,您可以为每个代理设置创建不同的配置文件,并在运行 Firefox 时使用以下命令在配置文件之间切换:

    firefox -no-remote -P <profilename>
    

    【讨论】:

      【解决方案3】:

      只是想以更简洁的格式发布代码...最初由 sam3344920 发布

      cd /D "%APPDATA%\Mozilla\Firefox\Profiles"
      cd *.default
      set ffile=%cd%
      echo user_pref("network.proxy.http", "148.233.229.235 ");>>"%ffile%\prefs.js"
      echo user_pref("network.proxy.http_port", 3128);>>"%ffile%\prefs.js"
      echo user_pref("network.proxy.type", 1);>>"%ffile%\prefs.js"
      set ffile=
      cd %windir%
      

      如果有人想删除代理设置,这里有一些代码可以帮您完成。

      cd /D "%APPDATA%\Mozilla\Firefox\Profiles"
      cd *.default
      set ffile=%cd%
      type "%ffile%\prefs.js" | findstr /v "user_pref("network.proxy.type", 1);" >"%ffile%\prefs_.js"
      rename "%ffile%\prefs.js" "prefs__.js"
      rename "%ffile%\prefs_.js" "prefs.js"
      del "%ffile%\prefs__.js"
      set ffile=
      cd %windir%
      

      解释: 代码找到 perfs.js 文件。然后在其中查找行 "user_pref("network.proxy.type", 1);"。如果找到它,它会删除带有 /v 参数的文件。我添加重命名和删除行的原因是,一旦我删除了代理行,我就找不到覆盖文件的方法。我确信有一种更更有效/更安全的方式来做到这一点......

      【讨论】:

      • 我从来不知道像cd *.default* 这样的东西是可能的——更好的是:pushd %APPDATA%\Mozilla\Firefox\Profiles\*.default* 也可以。
      • @xBoarder 当您需要可用于 sed 的字符串时,您所做的就是评论它。添加更多,不要删除。即:user_pref("network.proxy.type", 1);。此外,您可以将network.proxy.type 设置为直接连接,而不是删除。
      【解决方案4】:

      执行此操作的最简单方法是将 Firefox 配置为使用带有文件 URL 的 PAC,然后在启动 Firefox 之前从行命令更改文件 URL。

      这是最简单的方法。您不必编写一个脚本来记住 prefs.js 的路径(可能会随着时间而改变)。

      您只需配置一次配置文件,然后就可以随时编辑外部文件。

      【讨论】:

      • 在启动 Firefox 之前从 line 命令更改文件 URL -> 请解释一下自己或放一个代码示例。
      • 您能否进一步详细说明什么是 PAC 文件以及应该做什么。我也对如何开始一个新的网络会话感兴趣。我不希望 firefox 忽略新进程,因为它已经在运行并打开一个新选项卡。
      • 这个问题太老了,我会把我的回答放在cmets中:保存你要磁盘的PAC文件。然后在浏览器中查看,这将强制在地址栏中创建正确的文件 URL。复制此值,转到您的浏览器代理首选项,选择 PAC 文件,然后粘贴该 URL(而不是使用更标准的 http:https: URL。
      • re: 什么是 PAC 文件 -> developer.mozilla.org/en-US/docs/Web/HTTP/…
      • re: web session -> 那应该是一个不同的问题吗?
      【解决方案5】:

      cd /D “%APPDATA%\Mozilla\Firefox\Profiles” cd *.default set ffile=%cd% echo user_pref("network.proxy.http", "%1");>>"%ffile%\prefs.js" 回显 user_pref("network.proxy.http_port", 3128);>>"%ffile%\prefs.js" 回显 user_pref("network.proxy.type", 1);>>"%ffile%\prefs.js" 设置 ffile=cd %windir%

      这很好!谢谢你写这个。我需要这段用于 Windows 的确切代码。我的目标是通过先学习使用 Linux 来做到这一点,然后学习 Windows shell,我不喜欢这样做,这样你节省了我一些时间!

      我的 Linux 版本在这篇文章的底部。我一直在尝试将首选项插入哪个文件。似乎很挑剔。首先,我在 ~/.mozilla/firefox/*.default/prefs.js 中进行了尝试,但加载得不是很好。 about:config 屏幕从未显示我的更改。目前我一直在尝试编辑实际的 Firefox 默认文件。如果有人突然想到了这些知识,他们是否可以重写 Windows 代码以仅在它们不存在的情况下添加行?如果不先安装 Cygwin,我不知道如何在 Windows 中执行 sed/awk 操作。

      我能够对 Windows 脚本进行的唯一更改是上面引用的部分。我将 IP 更改为 %1,因此当您从命令行调用脚本时,您可以为其提供一个选项,而不必更改文件。

      #!/bin/bash
      version="`firefox -v | awk '{print substr($3,1,3)}'`"
      echo $version " is the version."
      # Insert an ip into firefox for the proxy if there isn't one
      if
      ! grep network.proxy.http /etc/firefox-$version/pref/firefox.js 
        then echo 'pref("network.proxy.http", "'"$1"'")";' >> /etc/firefox-$version/pref/firefox.js 
      fi
      
      # Even if there is change it to what we want
      sed -i s/^.*network.proxy.http\".*$/'pref("network.proxy.http", "'"$1"')";'/  /etc/firefox-$version/pref/firefox.js 
      
      # Set the port
      if ! grep network.proxy.http_port /etc/firefox-$version/pref/firefox.js 
        then echo 'pref("network.proxy.http_port", 9980);' >> /etc/firefox-$version/pref/firefox.js 
        else sed -i s/^.*network.proxy.http_port.*$/'pref("network.proxy.http_port", 9980);'/ /etc/firefox-$version/pref/firefox.js 
      fi
      
      # Turn on the proxy
      if ! grep network.proxy.type  /etc/firefox-$version/pref/firefox.js 
        then echo 'pref("network.proxy.type", 1);' >> /etc/firefox-$version/pref/firefox.js 
        else sed -i s/^.*network.proxy.type.*$/'pref("network.proxy.type", 1)";'/ /etc/firefox-$version/pref/firefox.js 
      fi
      

      【讨论】:

      • 青石。为了避免这种情况,有一个 Firefox 扩展允许 Firefox 获取全局变量 http_proxy=http://localhost:8080 例如。您不需要export,只需将其添加到命令之前。例如,Chrome 使用 http_proxy=http://some-proxy-ip:port chrome httpbin.org/ip 开箱即用。我不知道为什么Firefox没有处理。
      • 向该脚本添加几个 $@ 参数将执行正常,还支持默认代理文件以外的其他功能:-)
      • @erm3nda 你能指定你所指的扩展名吗?
      • @RickvanderZwet 该扩展正在使用环境变量。这是:addons.mozilla.org/es/firefox/addon/environment-proxy。我没有检查新扩展和标准扩展是否支持它。
      【解决方案6】:
      it working perfect.
      
      cd /D "%APPDATA%\Mozilla\Firefox\Profiles"
      cd *.default
      set ffile=%cd%
      echo user_pref("network.proxy.ftp", "YOUR_PROXY_SERVER"); >>prefs.js
      echo user_pref("network.proxy.ftp_port", YOUR_PROXY_PORT); >>prefs.js
      echo user_pref("network.proxy.http", "YOUR_PROXY_SERVER"); >>prefs.js
      echo user_pref("network.proxy.http_port", YOUR_PROXY_PORT); >>prefs.js
      echo user_pref("network.proxy.share_proxy_settings", true); >>prefs.js
      echo user_pref("network.proxy.socks", "YOUR_PROXY_SERVER"); >>prefs.js
      echo user_pref("network.proxy.socks_port", YOUR_PROXY_PORT); >>prefs.js
      echo user_pref("network.proxy.ssl", "YOUR_PROXY_SERVER"); >>prefs.js
      echo user_pref("network.proxy.ssl_port", YOUR_PROXY_PORT); >>prefs.js
      echo user_pref("network.proxy.type", 1); >>prefs.js
      set ffile=
      cd %windir%
      

      【讨论】:

        【解决方案7】:

        您可以使用 -proxy-server 选项通过代理服务器从命令行轻松启动 Firefox。

        这适用于 Mac、Windows 和 Linux。

        path_to_firefox/firefox.exe -proxy-server %proxy_URL%

        Mac 示例:

        /Applications/Firefox.app/Contents/MacOS/firefox -proxy-server proxy.example.com

        【讨论】:

        • 这不是一个记录的选项,至少在 Linux 中不起作用。
        • @EricLaw 有一个扩展告诉 Firefox 读取 http_proxy 环境变量,因此您可以简单地将其链接到 http_proxy="http://midomain:port" firefox google.com 作为示例。最后,您可以使用 gsettings 包,它可以让您使用gsettings set org.gnome.system.proxy“全局”设置任何内容。请参阅此处 (dpaste.com/3BE8YK1) 从 Fiddler 的 Linux attach.script 中提取的完整示例。
        【解决方案8】:

        我需要设置一个附加选项以允许 SSO 直通到我们的 Intranet 站点。我在上面的示例中添加了一些代码。

        pushd "%APPDATA%\Mozilla\Firefox\Profiles\*.default"
        echo user_pref("network.proxy.type", 4);>>prefs.js
        echo user_pref("network.automatic-ntlm-auth.trusted-uris","site.domain.com, sites.domain.com");>>prefs.js
        popd
        

        【讨论】:

          【解决方案9】:

          这里的所有其他答案都解释了如何将您的代理设置编程到 Firefox 中,这就是 WPAD 的发明目的。如果您配置了 WPAD,那么只需告诉 Firefox 使用它来自动检测其设置,就像您在 GUI 中所做的那样。

          从 cmd 文件或命令行执行此操作:

          pushd "%APPDATA%\Mozilla\Firefox\Profiles\*.default"
          echo user_pref("network.proxy.type", 4);>>prefs.js
          popd
          

          这当然需要您配置 WPAD 并正常工作。我也相信prefs.js 在你运行一次 Firefox 之前不会存在。

          【讨论】:

            【解决方案10】:

            我找到了一种在 windows 下使用 powershell 的更好方法(但实际上只是因为我正在寻找一种方法来编写脚本更改用户代理字符串,而不是使用代理)。

            function set-uas
            {
                Param
                (
                        [string]$UAS = "Default"
                )
            
                $FirefoxPrefs = "C:\Users\Admin\AppData\Roaming\Mozilla\Firefox\Profiles\*.default\prefs.js"
            
                if ($UAS -eq "Default")
                {
                    $fileinfo = type $FirefoxPrefs
                    $fileinfo = $fileinfo | findstr /v "general.appname.override"    
                    $fileinfo = $fileinfo | findstr /v "general.appversion.override"
                    $fileinfo = $fileinfo | findstr /v "general.platform.override"  
                    $fileinfo = $fileinfo | findstr /v "general.useragent.appName"  
                    $fileinfo = $fileinfo | findstr /v "general.useragent.override" 
                    $fileinfo = $fileinfo | findstr /v "general.useragent.vendor"   
                    $fileinfo = $fileinfo | findstr /v "general.useragent.vendorSub"
                    $fileinfo += "user_pref(`"useragentswitcher.import.overwrite`", false);`n"
                    $fileinfo += "user_pref(`"useragentswitcher.menu.hide`", false);`n"
                    $fileinfo += "user_pref(`"useragentswitcher.reset.onclose`", false);`n"
                    $fileinfo | Out-File -FilePath $FirefoxPrefs -Encoding ASCII
                }
                else
                {
                    set-uas Default
                }
            
                if ($UAS -eq "iphone")
                {
                    $fileinfo = ""
                    $fileinfo += "user_pref(`"general.appname.override`", `"Netscape`");`n"
                    $fileinfo += "user_pref(`"general.appversion.override`", `"5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16`");`n"
                    $fileinfo += "user_pref(`"general.platform.override`", `"iPhone`");`n"                                                                                                                                      
                    $fileinfo += "user_pref(`"general.useragent.appName`", `"Mozilla`");`n"                                                                                                                                     
                    $fileinfo += "user_pref(`"general.useragent.override`", `"Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16`");`n"
                    $fileinfo += "user_pref(`"general.useragent.vendor`", `"Apple Computer, Inc.`");`n"                                                                                                                         
                    $fileinfo += "user_pref(`"general.useragent.vendorSub`", `"`");`n"                                                                                                                                          
                    $fileinfo += "user_pref(`"useragentswitcher.reset.onclose`", false);`n"
                    $fileinfo | Out-File -FilePath $FirefoxPrefs -Encoding ASCII -Append
                }
                elseif ($UAS -eq "lumia")
                {
                    $fileinfo = ""
                    $fileinfo += "user_pref(`"general.appname.override`", `"Netscape`");`n"
                    $fileinfo += "user_pref(`"general.appversion.override`", `"9.80 (Windows Phone; Opera Mini/9.0.0/37.6652; U; en) Presto/2.12.423 Version/12.16`");`n"
                    $fileinfo += "user_pref(`"general.platform.override`", `"Nokia`");`n"                                                                                                                                       
                    $fileinfo += "user_pref(`"general.useragent.appName`", `"Mozilla`");`n"                                                                                                                                     
                    $fileinfo += "user_pref(`"general.useragent.override`", `"Opera/9.80 (Windows Phone; Opera Mini/9.0.0/37.6652; U; en) Presto/2.12.423 Version/12.16`");`n"
                    $fileinfo += "user_pref(`"general.useragent.vendor`", `"Microsoft`");`n"                                                                                                                            
                    $fileinfo += "user_pref(`"general.useragent.vendorSub`", `"`");`n"                                                                                                                                          
                    $fileinfo += "user_pref(`"useragentswitcher.reset.onclose`", false);`n"
                    $fileinfo | Out-File -FilePath $FirefoxPrefs -Encoding ASCII -Append
                }
            }
            

            我还安装了 firefox 插件“useragentswitcher”,没有它还没有测试过。
            我也设置了 "user_pref("useragentswitcher.reset.onclose", false);"

            [编辑] 我已经修改了我的代码,它偶尔会输出一些错误的字符或其他东西。由于某种原因,这被 Firefox 检测为损坏的配置文件,整个配置文件被丢弃,并使用默认配置文件进行刷新。

            此外,功劳归于功劳:此代码大致基于 xBoarder 在他对 sam3344920 (https://stackoverflow.com/a/2509088/5403057) 的回复中发布的内容。此外,在 Phoenix14830 (https://stackoverflow.com/a/32080395/5403057) 的帖子的帮助下,我能够修复编码错误

            [Edit2] 添加了对将 UAS 设置为 lumia 的支持。这实际上是使用 Opera 移动 UAS,因为我仍然希望 bing 工作,如果您使用常规 lumia UAS www.bing.com 重定向到 bing://?%^&* Firefox 不知道如何处理

            【讨论】:

            • hmm...现在似乎出于某种奇怪的原因在字符之间添加了一堆空值...o_0
            【解决方案11】:

            这是对我有用的最终编译解决方案...经过尝试和测试...

            在 Windows 中通过 cmd 在 Mozilla Firefox 中更改代理设置的步骤

            1. cd /D "%APPDATA%\Mozilla\Firefox\Profiles"
            2. cd *.default

            将已经存在的代理设置替换为用户定义的设置

            1. powershell -Command "(gc prefs.js) -replace 'user_pref(\"network.proxy.http\", \"已经存在 IP\")\;', 'user_pref( \"network.proxy.http\", \"你的 http 代理 ip\");' | 设置内容 prefs.js"
            2. powershell -Command "(gc prefs.js) -replace 'user_pref(\"network.proxy.http_port\", 已经存在端口)\;', 'user_pref(\"network. proxy.http_port\", 你的 http 代理端口);' | 设置内容 prefs.js"
            3. powershell -Command "(gc prefs.js) -replace 'user_pref(\"network.proxy.share_proxy_settings\", 已经存在值)\;', 'user_pref(\"network. proxy.share_proxy_settings\", true);' | 设置内容 prefs.js"
            4. powershell -Command "(gc prefs.js) -replace 'user_pref(\"network.proxy.type\", 已经存在的值)\;', 'user_pref(\"network. proxy.type\", 1);' | 设置内容 prefs.js"

              0 - 无代理

              1 - 手动代理配置

              4 - 自动检测代理设置

              5 - 使用系统设置(默认)

            5. cd %windir%

            检查已经存在的代理设置

            1. cd C:\Users\{用户名}\AppData\Roaming\Mozilla\Firefox\Profiles\sat2m7dr.default\
            2. 找到 /i "network.proxy" prefs.js

            使用您定义的代理设置从 CMD 启动 Firefox

            1. cd C:\Program Files\
            2. cd "Mozilla Firefox"
            3. firefox.exe -ProfileManager
            4. 从列表中选择default(默认选择default-release),点击ok。

            注意:您可能不必再次运行第 14 步。相反,您可以直接运行 firefox.exe

            【讨论】:

              【解决方案12】:

              我认为没有直接设置代理的方法(在 Windows 上)。

              但是,您可以安装像 FoxyProxy 这样的插件,为不同的代理创建多个配置,然后在启动 FireFox 之前将适当的配置移动到您的 FireFox 配置文件中的正确文件夹(使用批处理文件)。

              【讨论】:

                【解决方案13】:
                @echo off
                color 1F
                
                
                cd /D "%APPDATA%\Mozilla\Firefox\Profiles"
                cd *.default 
                set ffile=%cd%
                cd %ffile%
                echo user_pref("network.proxy.http", "192.168.1.235 ");>>"prefs.js" 
                echo user_pref("network.proxy.http_port", 80);>>"prefs.js" 
                echo user_pref("network.proxy.type", 1);>>"prefs.js" 
                set ffile=
                cd %windir%
                

                【讨论】:

                • 对你在这里所做的一些解释可能会很有帮助。
                • 我喜欢 grok CD *.default,但我建议 ECHO 文件 user.js 上的三行:Firefox on start read and merge user.js into prefs.js(所以我们不要' t 编辑主配置文件)。
                【解决方案14】:

                非常感谢,我在这个网站上找到了答案。

                这里我指的是一个cmd文件的制作

                通过微信

                cd /D "%APPDATA%\Mozilla\Firefox\Profiles"
                cd *.default
                set ffile=%cd%
                echo user_pref("network.proxy.http", "192.168.1.235 ");>>"%ffile%\prefs.js"
                echo user_pref("network.proxy.http_port", 80);>>"%ffile%\prefs.js"
                echo user_pref("network.proxy.type", 1);>>"%ffile%\prefs.js"
                set ffile=
                cd %windir%
                

                【讨论】:

                • 非常感谢,我在这个网站上找到了答案。这里我指的是minimo cd /D "%APPDATA%\Mozilla\Firefox\Profiles" cd *.default set ffile=%cd% echo user_pref("network.proxy.http", "148.233. 229.235 ");>>"%ffile%\prefs.js" echo user_pref("network.proxy.http_port", 3128);>>"%ffile%\prefs.js" echo user_pref("network.proxy.type" , 1);>>"%ffile%\prefs.js" 设置 ffile= cd %windir%
                【解决方案15】:

                对于最新的 Firefox,您必须更改

                cd *.default
                

                cd *.default*
                

                【讨论】:

                  【解决方案16】:

                  您也可以使用我编写的这个 Powershell 脚本来执行此操作,以及所有其他 Firefox 设置。

                  https://bitbucket.org/remyservices/powershell-firefoxpref/wiki/Home

                  使用它,您可以使用计算机启动和用户登录脚本轻松管理 Firefox。有关如何使用它的说明,请参阅 wiki 页面。

                  【讨论】:

                    【解决方案17】:

                    user.js 更适合自定义,因为您可以只包含您想要操作的行,即您可以覆盖整个文件,而不是 find-replace。此外,prefs.js(至少在 Firefox 65.0.1 for Mac 上)以警告开头:

                    // DO NOT EDIT THIS FILE.
                    //
                    // If you make changes to this file while the application is running,
                    // the changes will be overwritten when the application exits.
                    //
                    // To change a preference value, you can either:
                    // - modify it via the UI (e.g. via about:config in the browser); or
                    // - set it within a user.js file in your profile.
                    

                    在我的例子中,user.js 不存在,所以我创建了它并包含在“无代理”和“手动代理配置”之间切换的行(我一直只使用一个 SOCKS 代理,所以无需更改端口号或任何其他详细信息,只需在以下行中将 0 翻转为 1):

                    user_pref("network.proxy.type", 1);

                    我最终得到了一个放在 /usr/local/bin/firefox 的 bash 脚本:

                    #!/bin/bash
                    if [ $# -eq 0 ]; then
                      echo 'user_pref("network.proxy.type", 0);' > ~/Library/Application\ Support/Firefox/Profiles/t5rvw47o.default/user.js
                      open -a Firefox
                    else
                      case $1 in
                        vpn)
                          echo 'user_pref("network.proxy.type", 1);' > ~/Library/Application\ Support/Firefox/Profiles/t5rvw47o.default/user.js
                          open -a Firefox
                      esac 
                    fi
                    

                    要使用它,我确保没有 Firefox 正在运行,然后运行 ​​firefox 以建立直接连接,并运行 firefox vpn 以使用代理。

                    【讨论】:

                      【解决方案18】:

                      你好我得到了完美的鳕鱼使用这个代码

                      cd /D "%APPDATA%\Mozilla\Firefox\Profiles"

                      cd *.default

                      设置 ffile=%cd%

                      echo user_pref("network.proxy.http", "127.0.0.1"); >>prefs.js

                      echo user_pref("network.proxy.http_port", 8080); >>prefs.js

                      设置 ffile=

                      cd %windir

                      【讨论】:

                        【解决方案19】:

                        火狐?我不认为你可以。不过 IE 是另一回事..

                        【讨论】:

                          猜你喜欢
                          • 2020-06-17
                          • 2015-01-15
                          • 2016-02-19
                          • 1970-01-01
                          • 2016-07-19
                          • 1970-01-01
                          • 1970-01-01
                          • 2016-04-15
                          • 2013-10-04
                          相关资源
                          最近更新 更多