通过命令行设置firefox代理

时间:2009-05-09 13:35:56

标签: firefox command-line

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

由于

20 个答案:

答案 0 :(得分:17)

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

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

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

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

您之后的设置被命名为“network.proxy.http”和“network.proxy.http_port”。

现在它取决于您能够/准备用于更改文件的技术。

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

答案 1 :(得分:10)

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

firefox -no-remote -P <profilename>

答案 2 :(得分:9)

只是想以更干净的格式发布代码...最初由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参数删除该文件。我添加重命名和删除行的原因是因为在删除代理行后,我找不到覆盖文件的方法。我确信有更多高效/安全的方式来做这件事......

答案 3 :(得分:4)

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

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

您可以配置一次配置文件,然后根据需要编辑外部文件。

答案 4 :(得分:4)

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%

答案 5 :(得分:3)

  

cd / D.   “%APPDATA%\ Mozilla的\火狐\配置文件”   cd * .default set ffile =%cd%echo   user_pref( “network.proxy.http”   “%1”);&gt;&gt;“%ffile%\ prefs.js”echo   user_pref( “network.proxy.http_port”   3128);&gt;&gt;“%ffile%\ prefs.js”echo   user_pref( “network.proxy.type”   1);&gt;&gt;“%ffile%\ prefs.js”设置ffile = cd   %WINDIR%

这很好!谢谢你写这个。我需要Windows的这段代码。我的目标是通过首先学习使用Linux来学习Windows shell,然后学习我不满意的Windows shell,这样我就节省了一些时间!

我的Linux版本在这篇文章的底部。我一直在尝试将prefs插入哪个文件。看起来很挑剔。首先我尝试了〜/ .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

答案 6 :(得分:2)

我需要设置一个额外的选项,以允许SSO passthrough到我们的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

答案 7 :(得分:2)

您可以使用-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

答案 8 :(得分:1)

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

然而,你可以安装一个像FoxyProxy这样的附加组件,为不同的代理创建几个配置,在启动FireFox之前,将适当的配置移动到FireFox配置文件中的正确文件夹(使用批处理文件)。

答案 9 :(得分:1)

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

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

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

用用户定义的替换现有的代理设置

  1. powershell-命令“(gc prefs.js)-替换'user_pref(\” network.proxy.http \“,\” 已经存在的IP \“)\”,','user_pref( \“ network.proxy.http \”,\“ 您的http代理ip \”);' |设置内容prefs.js”
  2. powershell-命令“(gc prefs.js)-替换'user_pref(\“ network.proxy.http_port \”,已经存在的端口)\;','user_pref(\“网络。 proxy.http_port \“,您的http代理端口);' |设置内容prefs.js”
  3. powershell-命令“(gc prefs.js)-替换'user_pref(\“ network.proxy.share_proxy_settings \”,已经存在的值)\;','user_pref(\“网络。 proxy.share_proxy_settings \“, true );' |设置内容prefs.js”
  4. powershell-命令“(gc prefs.js)-替换'user_pref(\” network.proxy.type \“,已经存在的值)\;','user_pref(\ “ network.proxy.type \”, 1 );' |设置内容prefs.js”

    0-无代理

    1-手动代理配置

    4-自动检测代理设置

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

  5. cd%windir%

要检查已存在的代理服务器设置

  1. cd C:\ Users \ uniken \ 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. 从列表中选择默认值(默认选择默认版本),然后单击“确定”。

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

答案 10 :(得分:1)

我在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://?%^&amp; *哪个firefox不知道如何过程

答案 11 :(得分:1)

此处的所有其他答案都解释了如何将代理设置编程到Firefox中,这是WPAD发明的内容。如果你配置了WPAD,那就告诉Firefox使用它来自动检测它的设置,就像在GUI中一样。

Connection Settings

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

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

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

答案 12 :(得分:0)

最新的Firefox必须更改

cd *.default

cd *.default*

答案 13 :(得分:0)

@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%

答案 14 :(得分:0)

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

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

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

答案 15 :(得分:0)

还有一些Firefox附加组件可以帮助进行代理设置。 FoxyProxy是最受欢迎的人之一。还有一个,只用命令行改变了代理设置,但我现在似乎无法找到它。

Mozilla's FoxyProxy Page

答案 16 :(得分:0)

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

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

by minimo

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%

答案 17 :(得分:0)

user.js更适合自定义,因为您可以仅包含要处理的行,即代替查找替换,您可以覆盖整个文件。另外,prefs.js(至少在Mac上为Firefox 65.0.1上)以警告开头:

// 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 :(得分:-1)

您好,我使用此代码获得了完美的鳕鱼

cd / D“%APPDATA%\ Mozilla \ Firefox \ Profiles”

cd * .default

set ffile =%cd%

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

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

set ffile =

cd%windir

答案 19 :(得分:-3)

火狐?我认为你不能。 IE是另一个故事..