gpt4 book ai didi

proxy - hg 克隆无法访问网络

转载 作者:行者123 更新时间:2023-12-01 09:09:57 25 4
gpt4 key购买 nike

我的firefox安装了autoproxy,购买了vps服务后,所有的网页都可以通过socket5代理服务浏览。

apt-get install mercurial  #on my local pc
hg clone https://vim.googlecode.com/hg/ /tmp/vim #on my local pc
abort: error: Network is unreachable

https://vim.googlecode.com/hg/可以在Firefox中通过autoproxy访问。
如何在我的远程 VPS 上构建某种代理服务以使 hg clone 命令到达 https://vim.googlecode.com/hg/

不是所有的网站都可以在这里访问,我已经搭建了一个梯子,可以通过 Firefox 访问它们。

如何在我的 VPS(在远程 PC 上)上制作另一个梯子,使 hg clone 命令在我的本地 PC 上运行?

每次我用我的 VPS 和 Firefox 以这种方式制作阶梯时:

  1. 在本地电脑输入ssh命令

    ssh -D 127.0.0.1:1080  -p 1234 root@44.44.44.44
  2. 点击 Autoproxy 插件进入全局模式。它在 Socket 5 代理中设置为良好状态。

  3. 现在我可以访问我想访问的地方了。

如何编写hg clone命令?

最佳答案

要为 Mercurial 使用代理,您可以在命令前加上 http_proxy:

http_proxy=http://proxy-server:8080 hg clone https://vim.googlecode.com/hg

或者在你的~/.hgrc中配置为:

[http_proxy]
host=proxy-host:port
user=username
passwd=password

由于您使用的是 SOCKS5 代理,因此 Mercurial(撰写本文时为 3.7.2)尚不支持,但是有 an extension因为它基于 patch下面。

扩展

您可以下载 Mercurial DVCS 的小扩展以启用 SOCKS5 代理:https://bitbucket.org/bugheisen/socks_proxy

因此可以在 ~/.hgrc 中将代理配置为:

[extensions]
socks_proxy = /path/to/socks_proxy.py

[socks_proxy]
host = localhost:9150

To experiment with a SOCKS5 proxy you can use the -D option of SSH, which creates such a proxy that runs over the SSH connection. Alternatively you can run Tor, which also starts a SOCKS5 proxy (probably either on port 9050 or port 9150).

补丁

以上扩展是基于Bug Heisen发布的原始补丁,您可以通过downloading the source code of Mercurial申请。并应用这个patch基于以下代码:

diff -r 12f161f08d74 -r 3f58227755ed mercurial/url.py
--- a/mercurial/url.py Tue Apr 01 23:41:32 2014 -0700
+++ b/mercurial/url.py Sun Apr 06 16:16:02 2014 +0200
@@ -63,6 +63,44 @@

class proxyhandler(urllib2.ProxyHandler):
def __init__(self, ui):
+
+ # First, check if a SOCKS5 proxy is set, using a line 'host = ...' in
+ # the [socks_proxy] section of the config file.
+
+ proxyurl = ui.config("socks_proxy", "host")
+
+ if proxyurl:
+ idx = proxyurl.find(":")
+ if idx < 0:
+ raise util.Abort(_("host in socks_proxy should be "
+ "hostname:port"))
+
+ host = proxyurl[:idx]
+ portstr = proxyurl[idx+1:]
+ try:
+ port = int(portstr)
+ except ValueError:
+ raise util.Abort(_("Cannot interpret '%s' in the socks_proxy "
+ "host line as an integer port number")
+ % portstr)
+
+ if port <= 0 or port > 65535:
+ raise util.Abort(_("Port number in socks_proxy host line "
+ "must lie between 1 and 65535, but is "
+ "%d") % port)
+
+ ui.note("Setting SOCKS5 proxy to %s:%d\n" % (host, port))
+
+ try:
+ import socks
+ socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, host, port)
+ socket.socket = socks.socksocket
+ except ImportError:
+ raise util.Abort(_("The SocksiPy socks module is needed for "
+ "SOCKS support"))
+
+ # Then check for a http/https proxy
+
proxyurl = ui.config("http_proxy", "host") or os.getenv('http_proxy')
# XXX proxyauthinfo = None

然后在您的 ~/.hgrc 中使用 socks_proxy 而不是 http_proxy(如上所示)。

关于这个补丁的原始注释:

This patch adds support for a SOCKS5 proxy, using the 'socks' module from the SocksiPy projects (needs to be installed separately). Because it is the 'proxyhandler' function that is modified, it will only work for HTTP/HTTPS protocols. For the SSH protocol, using a SOCKS proxy can easily be done outside of Mercurial, by specifying the ProxyCommand option.

The patch has the SOCKS5 version hardcoded in it, but the socks module should support other versions as well. So other SOCKS versions are possible in the same way, but the code would require modification to support them.

For testing purposes, it's good to know that SSH can create a SOCKS5 proxy using the -D command line flag. Using Tor also generates such a proxy, typically either on port 9050 or 9150.

关于proxy - hg 克隆无法访问网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35822850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com