【发布时间】:2010-10-25 00:10:42
【问题描述】:
如何在 windows xp/2k 上通过命令行更改 Firefox 代理设置?
谢谢
【问题讨论】:
标签: firefox command-line
如何在 windows xp/2k 上通过命令行更改 Firefox 代理设置?
谢谢
【问题讨论】:
标签: firefox command-line
代理设置存储在用户的 Firefox 配置文件中的 prefs.js 文件中。
Firefox 配置文件目录和文件的路径是:
%APPDATA%\Mozilla\Firefox\Profiles\7b9ja6xv.default\prefs.js
其中“7b9ja6xv”是一个随机字符串。但是,默认配置文件的目录始终以“.default”结尾。无论如何,大多数时候只会有一个配置文件。
你所追求的设置被命名为“network.proxy.http”和“network.proxy.http_port”。
现在这取决于您能够/准备使用什么技术来更改文件。
P.S.:如果这是关于通过登录脚本或类似方式更改一组用户的代理设置,我建议研究使用自动代理发现 (WPAD) 机制的可能性。您永远不必再次更改用户计算机上的代理配置。
【讨论】:
network.proxy.type。看我的回答below。
我不认为你可以。但是,您可以为每个代理设置创建不同的配置文件,并在运行 Firefox 时使用以下命令在配置文件之间切换:
firefox -no-remote -P <profilename>
【讨论】:
只是想以更简洁的格式发布代码...最初由 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* 也可以。
user_pref("network.proxy.type", 1);。此外,您可以将network.proxy.type 设置为直接连接,而不是删除。
执行此操作的最简单方法是将 Firefox 配置为使用带有文件 URL 的 PAC,然后在启动 Firefox 之前从行命令更改文件 URL。
这是最简单的方法。您不必编写一个脚本来记住 prefs.js 的路径(可能会随着时间而改变)。
您只需配置一次配置文件,然后就可以随时编辑外部文件。
【讨论】:
http: 或 https: URL。
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
【讨论】:
http_proxy=http://localhost:8080 例如。您不需要export,只需将其添加到命令之前。例如,Chrome 使用 http_proxy=http://some-proxy-ip:port chrome httpbin.org/ip 开箱即用。我不知道为什么Firefox没有处理。
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%
【讨论】:
您可以使用 -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“全局”设置任何内容。请参阅此处 (dpaste.com/3BE8YK1) 从 Fiddler 的 Linux attach.script 中提取的完整示例。
我需要设置一个附加选项以允许 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
【讨论】:
这里的所有其他答案都解释了如何将您的代理设置编程到 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 之前不会存在。
【讨论】:
我找到了一种在 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 不知道如何处理
【讨论】:
这是对我有用的最终编译解决方案...经过尝试和测试...
powershell -Command "(gc prefs.js) -replace 'user_pref(\"network.proxy.type\", 已经存在的值)\;', 'user_pref(\"network. proxy.type\", 1);' | 设置内容 prefs.js"
cd %windir%
注意:您可能不必再次运行第 14 步。相反,您可以直接运行 firefox.exe
【讨论】:
我认为没有直接设置代理的方法(在 Windows 上)。
但是,您可以安装像 FoxyProxy 这样的插件,为不同的代理创建多个配置,然后在启动 FireFox 之前将适当的配置移动到您的 FireFox 配置文件中的正确文件夹(使用批处理文件)。
【讨论】:
@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%
【讨论】:
非常感谢,我在这个网站上找到了答案。
这里我指的是一个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%
【讨论】:
对于最新的 Firefox,您必须更改
cd *.default
到
cd *.default*
【讨论】:
您也可以使用我编写的这个 Powershell 脚本来执行此操作,以及所有其他 Firefox 设置。
https://bitbucket.org/remyservices/powershell-firefoxpref/wiki/Home
使用它,您可以使用计算机启动和用户登录脚本轻松管理 Firefox。有关如何使用它的说明,请参阅 wiki 页面。
【讨论】:
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 以使用代理。
【讨论】:
你好我得到了完美的鳕鱼使用这个代码
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
【讨论】:
火狐?我不认为你可以。不过 IE 是另一回事..
【讨论】: