谢谢。
代理设置存储在用户的Firefox配置文件中的prefs.js
文件中。
Firefox个人资料目录和文件的路径是:
%APPDATA%\Mozilla\Firefox\Profiles\7b9ja6xv.default\prefs.js
其中"7b9ja6xv
"是一个随机字符串。但是,默认配置文件的目录总是以".default"结尾。大多数情况下,通常只会有一个配置文件。
你需要的设置名称为"network.proxy.http
"和"network.proxy.http_port
"。
现在取决于你准备使用哪种技术来更改文件。
P.S.:如果这是关于通过登录脚本或类似方式更改一组用户的代理设置,我建议考虑使用自动代理发现(WPAD)机制的可能性。这样,你就再也不必在用户计算机上更改代理配置了。
只是想以更整洁的格式发布代码… 最初由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*
也可以奏效。 - Martinuser_pref("network.proxy.type", 1);
。另外,你也可以将 network.proxy.type
设置为直接连接,而不是删除它。 - m3nda我认为你无法做到这一点。不过,你可以为每个代理设置创建不同的配置文件,并在运行Firefox时使用以下命令在配置文件之间切换:
firefox -no-remote -P <profilename>
export MOZ_FORCE_DISABLE_E10S=1
这样做将禁用 Firefox 的电解质模式,并允许您更改文件的 URL。请注意,这只是一个示例,具体实现方法取决于您的操作系统和具体任务需求。 - m3ndacd /D "%APPDATA%\Mozilla\Firefox\Profiles" cd *.default set ffile=%cd% echo user_pref("network.proxy.http", "%1");>>"%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%
这很好!谢谢你写出这段代码。我需要这个Windows版本的代码。我的目标是通过先学习Linux来做到这一点,然后再学习Windows shell,但我不想这么做,所以你节省了我一些时间!
我的Linux版本在本帖子底部。我一直在试验将首选项插入哪个文件中。它似乎很挑剔。首先我试图在~/.mozilla/firefox/*.default/prefs.js 中插入,但它没有很好地加载。about:config屏幕从未显示我的更改。目前,我一直在尝试编辑实际的Firefox默认文件。如果有人能够脱口而出地知道如何重写Windows代码,只有在没有这些行时才添加它们吗?我不知道如何在Windows上做sed/awk的事情,除非首先安装Cygwin。
我唯一能够对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
http_proxy=http://localhost:8080
,例如。您不需要export
,只需在命令前面添加它即可。例如,Chrome可以使用http_proxy=http://some-proxy-ip:port chrome httpbin.org/ip
开箱即用。我不知道为什么Firefox不能处理这个。 - m3nda您可以使用 -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
http_proxy
环境变量,所以你可以通过http_proxy="http://midomain:port" firefox google.com
这样的方式简单地链接它。最后,你可以利用gsettings包,使用gsettings set org.gnome.system.proxy
来全局设置任何内容。在这里(http://dpaste.com/3BE8YK1)可以看到从Fiddler的attach.script for Linux中提取出的完整示例。 - m3ndait 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%
我需要设置一个额外的选项,以允许SSO直通我们的内部网站。我在上面的示例中添加了一些代码。
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
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
}
}
network.proxy.type
。请参见我的答案下面。 - Samuel Harmer