各种包管理最好的还是替换国内镜像吧?貌似全局代理或许并没有什么用

2016-10-09 20:25:37 +08:00
 abmin521
曾经问过而且 Google 搜索过全局代理的问题,好多人都说 export all_proxy='socks5://127.0.0.1:1080'就可以,但是 Mac10.11.6 确认无效

最近尝试了一下 polipo 发现 brew update 还是失败(可能是需要设置 brew 的 http 代理),

proxifier 的代理规则,也并不是对所有 Mac 应用(比如 google-drive )都起作用,(或者是我的设置不对)目前我只用来代理 telegram

所以 我觉得,包管理最好的做法还是采用国内镜像

另外想问问大家都是怎么解决被墙的服务的?另外如果在 pac 上面加上 telegram.me 是不是 telegram 也可以脱离 proxifier 使用了?




ps :国内的网络环境好复杂
3457 次点击
所在节点    问与答
25 条回复
WildGuoDonglin
2016-10-09 20:28:01 +08:00
……创造性地解决了本不该存在的问题
wwqgtxx
2016-10-09 20:37:55 +08:00
路由器上开全局代理,这个最彻底
Marfal
2016-10-09 20:40:07 +08:00
TG 客户端是写死 IP 的。
a412739861
2016-10-09 20:49:00 +08:00
https 不行, http 可以使用 socks5 。
https 自己找软件,把 socks5 转接成 https 的端口,然后设置代理应该就可以了。
goofansu
2016-10-09 20:53:05 +08:00
路由器上翻最稳定
regist
2016-10-09 21:34:16 +08:00
@a412739861 你确认 https 不行?不要误导他人。
你简单测试下
all_proxy=socks5://127.0.0.1:1080 curl https://www.baidu.com

楼主说那么多,第一句最后,来个确认无效...我就不想看下去了...为什么人家都确认有效而他确认无效,如果他深究下,就不会草率的得出这个结论。
abmin521
2016-10-09 21:47:47 +08:00
@regist 我第一句说已经搜索过了,我对这些协议不懂,没有效果我才来问的,如果让你感到不适 ,请善用 block
a412739861
2016-10-09 21:56:22 +08:00
@regist

我确认了一晚上,还专门做了一个日志记录分析。


无代理:
代码: curl https://www.google.com
结果: curl: (7) Failed to connect to www.google.com port 443: Operation timed out

使用你的测试代码:
all_proxy=socks5://127.0.0.1:1080 curl https://www.google.com
curl: (35) Server aborted the SSL handshake

为什么你的能成功呢?

我当时的结论:
baidu 本身不用代理,也可以直接连接。
你这个变量控制的不太好,假设了 https 代理设置了,如果不成功,就无法连接,但是似乎实际上,他是无视了这个代理。


最后我的解决方案,参考自: http://tblog.im/2015/09/23/shi-yong-privoxyzhong-zhuan/
crysislinux
2016-10-09 22:07:15 +08:00
还是用路由器吧, mac 上最好的解决方案应该是 proxychains
bazingaterry
2016-10-09 22:18:32 +08:00
路由器上搞好 ss-redir ,再也没有考虑过这些问题了。
wzxjohn
2016-10-09 22:31:27 +08:00
@a412739861
Win 10 SS 原版
$ curl -ivvv https://www.google.com
* Rebuilt URL to: https://www.google.com/
* timeout on name lookup is not supported
* Trying 59.24.3.173...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:20 --:--:-- 0* connect to 59.24.3.173 port 443 failed: Timed out
* Trying 59.24.3.173...
0 0 0 0 0 0 0 0 --:--:-- 0:00:41 --:--:-- 0* connect to 59.24.3.173 port 443 failed: Timed out
* Failed to connect to www.google.com port 443: Timed out
* Closing connection 0
curl: (7) Failed to connect to www.google.com port 443: Timed out

$ all_proxy=socks5://127.0.0.1:1080 curl -s https://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/%3Fgws_rd%3Dcr&amp;ust=1476022789593248&amp;usg=AFQjCNHV8xppH1oDSbVTwiuiFlWKW4q32A">here</A>.
</BODY></HTML>

注意,由于 DNS 污染,你获取到的 Google IP 可能是错的,所以
all_proxy=socks5://127.0.0.1:1080 curl -s https://www.google.com 仍然有可能超时。去随便找个正确的 Google IP 写到 Hosts 里。
另外,从你的日志来看,连接已经成功了,只是 SSL 握手出现了问题。请用
curl -ivvv 看详细日志,来找到根本原因。而不是简单认为 all_proxy= 未生效。
abmin521
2016-10-09 22:37:39 +08:00
@wzxjohn win10 ? 用的 cmder ?
sengxian
2016-10-09 22:41:11 +08:00
用 Proxifier ,不管什么包管理, brew 还是 npm ,全部代理。
abmin521
2016-10-09 22:45:01 +08:00
@sengxian 不知道你是怎么设置的,我是选择代理 terminal.app 依然是不行 包括 google-drive 但是 telegram 是有效的
a412739861
2016-10-09 23:02:11 +08:00
@wzxjohn
恩,你的应该是对的。当时我是觉得 https_proxy 代理设置应该是可以的,但是不知道死活不知道为什么不可以,然后就接受现实了。


我当初怀疑是 https 连接的问题,接连尝试了 google , Facebook , github ,都是 curl: (35) Server aborted the SSL handshake 。
而和百度一样,国内 V2EX 是可行。
所以自以为得出了一个 https 无法使用 socks5 的结论,我对网络请求协议了解不多,恩,我承认是弱鸡……


我当时单纯觉得,中间层转发 https 和直接 socks5 ,发出的请求应该都通过 ss 转发,如果有问题就应该都有问题。所以更倾向于是 socks5 和 https_proxy 之间有问题。
中途还尝试过 curl --socks5-hostname 127.0.0.1:1080 https://www.google.com ,可行,又觉得更符合自己的观察结果。


直接 https_proxy 出现问题的描述
all_proxy=socks5://127.0.0.1:1080 curl -ivvv https://www.google.com
* Rebuilt URL to: https://www.google.com/
* Trying 127.0.0.1...
* 93
* 46
* 8
* 89
* Connected to 127.0.0.1 (127.0.0.1) port 1080 (#0)
* Server aborted the SSL handshake
* Closing connection 0

curl 使用 socks5 代理的结果
curl -ivvv --socks5-hostname 127.0.0.1:1080 https://www.google.com
* Rebuilt URL to: https://www.google.com/
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 1080 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: www.google.com
* Server certificate: Google Internet Authority G2
* Server certificate: GeoTrust Global CA
> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.43.0


根据上面的返回,我个人感觉也不太像 DNS 污染,这方面不了解…………
理由就像上面说的一样,我的 https 转发端口,其实也就是把本地监听了一个 https 端口,然后把数据传输到 SS 的 socks5 端口里面吧。


curl 这个方法我也不知道,是当时检查 proxy 是否起效,才找了这么个方法……更别说里面那一堆参数了。
其实,如果能有个 https 的 http://ip.cn/,我当初就能很快知道是不是起效了。


不过就算是 DNS 污染, lz 的场景,我感觉还是用我这个比较简单点,毕竟每个 DNS 都加一遍,好麻烦。
billlee
2016-10-09 23:38:13 +08:00
我测试了一下,应该是 DNS 污染的问题。 log 里明确显示了 locally resolved, 通过 http 代理转换后设置 ALL_PROXY=http://主机:端口,是可以工作的。
ALL_PROXY 环境变量也不是对所有程序都有效果,要程序本身支持才行。
sensui7
2016-10-09 23:55:12 +08:00
我是全部用的国内代理,其中 npm 那个淘宝镜像只设置别名,别用 cnpm 命令,会有问题。
arischow
2016-10-09 23:57:08 +08:00
mac 用 polipo , socks5 转 http ,然后 terminal 设 http 和 https 的 proxy
Bardon
2016-10-09 23:59:14 +08:00
1. ss 全局对终端不起作用,或者说,网络偏好设置中的代理配置,对终端不起作用。终端中使用需要设置 proxy env ,譬如 all_proxy=socks5://127.0.0.1:1080 curl ip.cn
2. proxifier 不对 GUI 起作用,要让 GUI app 起作用,需要你设置网络偏好设置中的代理,如你所言, ss 全局后(自动替你设置网络偏好设置中的代理),你的 telegram 就能在此时起作用

提问的智慧是很重要的,如果你的信息详细些,那么显然很多人会有兴趣去寻找问题根源,看看前面某楼回复信息明显错误,@regist 就立即指出来了。

你可以简单测试下你的代理是否正常工作

all_proxy=socks5://127.0.0.1:1080 curl ip.cn

另外 all_proxy 可以使用 http https ftp socks socks5 等代理协议
至于最终是否生效,要看你接下来的网络命令是否支持这类协议
譬如只支持 http 协议的网络命令,你用 all_proxy=socks5://xxx 显然是不行的,譬如 curl 支持 socks5 ,那么用 curl 测试 socks5 代理协议非常方便
deepjia
2016-10-10 00:07:34 +08:00
@abmin521 点错了点成感谢了,你 proxifier 配到 terminal.app 上干嘛,你用什么命令就陪到什么上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311472

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX