我想使用socks5代理设置我的Chrome。
chrome://linux-proxy-config/
要在 Chrome 中输入chrome://linux-proxy-config/
,我会看到一个包含以下内容的页面:
在受支持的桌面环境下运行 Google Chrome 时,将使用系统代理设置。但是,您的系统不受支持,或者启动您的系统配置时出现问题。
但您仍然可以通过命令行进行配置。请参阅 man
google-chrome
以获取有关标志和环境变量的更多信息。
我在控制台输入命令:
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080
上述命令的两个效果:
效果1:我现在可以通过socks5代理上网了。
effect2:这么多警告信息:
"Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank" [3873:3960:0808/102301.399211:ERROR:object_proxy.cc(619)] Failed to call method: org.freedesktop.Notifications.GetCapabilities: object_path= /org/freedesktop/Notifications: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files [7:13:0808/102302.782729:ERROR:command_buffer_proxy_impl.cc(107)] ContextResult::kTransientFailure: Shared memory region is not valid [3873:4069:0808/102302.788747:ERROR:object_proxy.cc(619)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files [3873:4069:0808/102302.789045:ERROR:object_proxy.cc(619)] Failed to call method: org.freedesktop.UPower.GetDisplayDevice: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
我想修复effect2,也就是说,让命令在后台静默运行。
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080 &
Effect2仍然存在,它无法在后台运行,控制台中仍然弹出警告信息。
尝试其他方式:
sudo gvim /usr/share/applications/google-chrome.desktop
#replace the `Exec=/usr/bin/google-chrome-stable --incognito` with
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://127.0.0.1:1080"
运行带有徽标的Chrome,Chrome可以打开,现在我无法使用代理上网socks5://127.0.0.1:1080
。如何修复它?
答案1
如果您找到了一种使事情正常进行的方法,并且您唯一担心的是收到太多警告,那么您可以按照自己的方式进行操作并丢弃消息:
<your command> 2> /dev/null
你将成为重定向 文件描述符(FD)#2,即 stderr,被重定向到“黑洞”。您可能还想丢弃发送到 stdout(FD #1)的消息,尽管在像您这样的情况中这种情况并不常见。您必须检查收到的杂乱信息量。因此,您需要(仅重定向 stderr):
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" 2> /dev/null &
或(重定向 stderr 和 stdout;这些是同一命令的替代形式)
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" 2> /dev/null 1>&2 &
google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" > /dev/null 2>&1 &
该语法2>&1
意味着将 FD #2 重定向到 FD #1 所在的位置。默认 FD 为 #1,因此>
相当于1>
.
对于极少数情况,您需要比上述更多的信息,或者出于好奇:
https://stackoverflow.com/questions/5256599/what-are-file-descriptors-explained-in-simple-terms
答案2
最有可能的是,您的编辑尝试google-chrome.desktop
没有成功,因为该文件有多个Exec
条目,而您更改的条目并不是实际使用的条目。
使用适用于 Debian 的 Chrome 软件包来自 Google 的存储库,显示了三个不同部分中的google-chrome.desktop
三个条目(组、中Exec
freedesktop.org 的命名法):
$ grep -E '^Exec|^\[|^Name=' /usr/share/applications/google-chrome.desktop
[Desktop Entry]
Name=Google Chrome
Exec=/usr/bin/google-chrome-stable %U
[Desktop Action new-window]
Name=New Window
Exec=/usr/bin/google-chrome-stable
[Desktop Action new-private-window]
Name=New Incognito Window
Exec=/usr/bin/google-chrome-stable --incognito
带有该--incognito
选项的选项(可能是您编辑的选项)仅当您从上下文菜单中选择“新建隐身窗口”时才会执行(例如,在 GNOME 活动中右键单击 Chrome 图标后)。
除非您的目标是更改系统上每个用户的配置,否则我建议您创建自己的自定义版本google-chrome.desktop
:
$ cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/
然后编辑Exec
条目,至少在[Desktop Entry]
组中(您可能希望保持其他Exec
条目对齐,以确保 Chrome 的行为方式相同,无论您使用哪个菜单条目启动它):
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://proxyURL:proxyPORT" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE proxyURL" %U
正如所指出的多米尼克·马蒂斯在一个评论,您可能需要添加选项--host-resolver-rules
以防止 Chrome 的 DNS 预取器绕过您的代理设置,如铬文档。
proxyURL
根据proxyPORT
需要进行调整;不要忘记设置proxyURL
和--proxy-server
选项--host-resolver-rules
。
如果您希望默认打开操作运行Chrome而不设置任何代理,您可以保留 main[Desktop Entry]
的Exec
条目不变并添加一个行动反而。它需要你
- 将新操作的名称添加到组
Actions
中的键中[Desktop Entry]
; - 添加新的操作组。
[Desktop Entry]
...
Actions=new-window;new-private-window;new-proxied-window;
...
[Desktop Action new-proxied-window]
Name=New Proxied Window
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://proxyURL:proxyPORT" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE proxyURL" %U
当您右键单击 Chrome 的图标时,“新代理窗口”将作为一个选项出现(可能需要注销/登录)。请注意,所有同时运行的 Chrome 实例将共享您打开的第一个实例的相同代理设置,除非您使用--user-data-dir
选项。
答案3
我写过关于Google Chrome 受代理设置影响的各种方式。不要在 Chrome 中设置代理,而是使用操作系统的设置。
如果您使用的是 GNOME,请尝试使用gsettings
gsettings set org.gnome.system.proxy.http host "myproxy.server.com"
gsettings set org.gnome.system.proxy.http port "3128"
wget
您可以使用或从 Internet 下载文件吗curl
?以下命令是否index.html
从 Google 主页创建文件?
wget https://www.google.com
如果您的问题是连接到 SOCKS 代理并且影响其他应用程序,请尝试使用代理链或者帕克代理。
$ proxychains4 google-chrome
答案4
猫 /usr/share/applications/google-chrome.desktop
[Desktop Entry]
Name=Google Chrome
Icon=/usr/share/icons/hicolor/16x16/apps/google-chrome.png
Terminal=false
Type=Application
Categories=Network;WebBrowser;
Exec=/usr/bin/google-chrome-stable --proxy-server="socks5://127.0.0.1:1080" 2> /dev/null 1>&2 &