如何让chrome正常运行代理?

如何让chrome正常运行代理?

我想使用socks5代理设置我的Chrome。

chrome://linux-proxy-config/

要在 Chrome 中输入chrome://linux-proxy-config/,我会看到一个包含以下内容的页面:

在受支持的桌面环境下运行 Google Chrome 时,将使用系统代理设置。但是,您的系统不受支持,或者启动您的系统配置时出现问题。

但您仍然可以通过命令行进行配置。请参阅 mangoogle-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

在 Bash 中,文件描述符 255 是做什么用的,我可以使用它吗?

https://en.wikipedia.org/wiki/File_descriptor

答案2

最有可能的是,您的编辑尝试google-chrome.desktop没有成功,因为该文件有多个Exec条目,而您更改的条目并不是实际使用的条目。

使用适用于 Debian 的 Chrome 软件包来自 Google 的存储库,显示了三个不同部分中的google-chrome.desktop三个条目(组、中Execfreedesktop.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条目不变并添加一个行动反而。它需要你

  1. 将新操作的名称添加到组Actions中的键中[Desktop Entry]
  2. 添加新的操作组。
[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 &

相关内容