https://blog.csdn.net/jyfu2_12/article/details/86667132
安裝時的錯誤提示如下:
Error installing Package Control: HTTPS error encountered, falling back to HTTP – <urlopen error="" [errno="" 60]="" operation="" timed="" out="">Error installing Package Control: HTTP error encountered, giving up –</urlopen> <urlopen error="" [errno="" 60]="" operation="" timed="" out="">error: An error occurred installing Package Control</urlopen>
Please check the Console for details
Visit https://packagecontrol.io/installation for manual instructions
那我們就 順着 https://packagecontrol.io/installation 向下來。先給本頁面代理,並替換安裝地址,最終代理后的地址如下: http://www.miaoqiyuan.cn/products/proxy.php/https://packagecontrol.io/installation。
1. 直接訪問上面提到的安裝地址,獲取安裝代碼
程序會自動替換安裝腳本的網絡路徑,已我已經部署好的地址為例,安裝代碼為:

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://www.miaoqiyuan.cn/products/proxy.php/http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
2. 打開Sublime Text 控制台,復制代碼安裝
打開 Sublime Text,在 View 菜單下,找到 Show Console。在底部控制台復制上面的代碼后,按回車,很快就會安裝完畢(和官方安裝方法一致)。

安裝完畢后,別忘了參考上面的教程更改 channels,請參考文章:http://www.miaoqiyuan.cn/p/package-control-error
項目已經在 Gitee.com 開源,可以直接去 https://gitee.com/mqycn/Proxy-for-Chinese-programmer/下載。
已經實現:
1、支持自動更新 雖然之前可以使用,但是因為 是手工保存到服務器靜態文件,只能使用老的插件。現在設置的每兩小時更新一次
2、在官網出現故障時仍能訪問 在自動和官網同步時,會 判斷 官網是否返回正確的代碼
3、一套最好能支持多個代理 借用 PHP 的PATH_INFO,可以非常方面的傳入任何 URL,可以對全網實現代理。當然,本程序也提供了白名單。
當然代理是有前提的:
1、對於被牆的代理,必須將域名放到 境外服務器
2、對於Sublime Text,服務器必須支持 IPv6
今天 Sublime Text 安裝 插件是,提示錯誤:
Package Control
There are no packages available for installation
Please see https://packagecontrol.io/docs/troubleshooting for help
控制台提示:
Package Control: Attempting to use Urllib downloader due to WinINet error: Error downloading channel. Connection refused (errno 12029) during HTTP write phase of downloading https://packagecontrol.io/channel_v3.json.
Package Control: Error downloading channel. URL error [WinError 10060] 由於連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 downloading https://packagecontrol.io/channel_v3.json.
也考慮過最簡單的方法,將channel_v3.json 保存到自己的服務器上,修改 Sublime Text 的配置文件。這種缺點也很明顯,會和官方插件不同步(雖然新出的插件頁用不到),編寫了一個小代理腳本,會兩個小時自動同步一次,完美的解決了這個問題。當然,官網服務器加入出現故障時,本腳本不會更新,仍使用本地緩存。
Package Control 不能使用?
使用方法如下(以我我已經部署好的地址為例,如果不放心我,可以在頁面底部下載源碼自行部署):
1. 打開 Settings User
打開 Sublime Text,選擇 references -> Package Setting -> Package Control -> Settings User
2. 輸入配置信息 打開配置文件后,輸入 channels 信息(請參考頁面頂部路徑說明 ,以線上地址為例):
1
2
3
|
3. 保存后,Package Control 已經可以正常使用了
Package Control 不能安裝?
Package Control 可以安裝插件了,在備用機例發現 Package Control 現在竟然無法安裝成功,這個有點繁瑣,還在用同一個腳本也解決了。
安裝時的錯誤提示如下:
Error installing Package Control: HTTPS error encountered, falling back to HTTP –
Error installing Package Control: HTTP error encountered, giving up –
error: An error occurred installing Package ControlPlease check the Console for details
Visit https://packagecontrol.io/installation for manual instructions
那我們就 順着 https://packagecontrol.io/installation 向下來。先給本頁面代理,並替換安裝地址,最終代理后的地址如下: http://www.miaoqiyuan.cn/products/proxy.php/https://packagecontrol.io/installation。
1. 直接訪問上面提到的安裝地址,獲取安裝代碼
程序會自動替換安裝腳本的網絡路徑,已我已經部署好的地址為例,安裝代碼為:
1
|
import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://www.miaoqiyuan.cn/products/proxy.php/http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
|
2. 打開Sublime Text 控制台,復制代碼安裝
打開 Sublime Text,在 View 菜單下,找到 Show Console。在底部控制台復制上面的代碼后,按回車,很快就會安裝完畢(和官方安裝方法一致)。
安裝完畢后,別忘了參考上面的教程更改 channels
問題解決,吹吹牛
這樣處理后已經能用了,趁現在心情好,順便吹吹牛,煽煽情:
最為一個中國的開發者,吃飯的家伙經常 因為 牆 的問題 沒法使用。
雖然 阿里、網易 的鏡像能解決大部分問題,但是對於小眾的軟件就只沒辦法了(比如 神器 Sublime Text),每次出問題都把自己折騰的焦頭爛額,影響工作進度。比如 Sublime Text,之前從同行的博客分享中找到了 channel_v3.json,他的站點因為備案問題,今天也不能訪問了。。。
我的目標是這樣項目把所有 小工具因牆出現的問題 都解決了,讓中國程序員不怕斷網、不怕被牆,開開心心快快樂樂的編碼。(不管能不能實現,這個牛先吹着)
代理腳本也很簡單,只有60行代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
<?php
define(
'CACHE'
,
'./proxy/cache/'
);
define(
'CONFIG'
,
'./proxy/conf/'
);
$url
= isset(
$_SERVER
[
'PATH_INFO'
]) ?
$_SERVER
[
'PATH_INFO'
] :
''
;
$url
=
substr
(
$url
, 1);
//驗證請求是否合法
$white
= json_decode(
file_get_contents
(CONFIG .
'white.json'
), true);
$matched
= false;
$verify
= false;
foreach
(
$white
as
$item
) {
if
(preg_match(
$item
[
'pattern'
],
$url
)) {
$matched
= true;
$verify
=
$item
[
'verify'
];
break
;
}
}
if
(!matched) {
header(
'404 Not Found'
);
die
("
<h2>Only whitelisted links are allowed</h2>
");
}
//根據請求獲取MIME
$mimes
= json_decode(
file_get_contents
(CONFIG .
'mime-lite.json'
), true);
$ext
=
explode
(
"."
,
$url
);
$ext
=
$ext
[
count
(
$ext
) - 1];
$ext
=
'.'
.
$ext
;
if
(
empty
(
$mimes
[
$ext
])) {
$ext
=
'.html'
;
}
$mime
=
$mimes
[
$ext
];
//緩存文件,兩小時更新一次
$cache_file
= CACHE . md5(
$cache
) .
$ext
;
if
(!
is_file
(
$cache_file
)) {
$will_refrech
= true;
}
elseif
(time() -
filemtime
(
$cache_file
) > 7200) {
$will_refrech
= true;
}
else
{
$will_refrech
= false;
}
if
(
$will_refrech
) {
$body
=
file_get_contents
(
$url
);
if
(
empty
(
$verify
) || preg_match(
$verify
,
$body
)) {
file_put_contents
(
$cache_file
,
$body
);
}
}
//輸出結果
if
(
is_file
(
$cache_file
)) {
header(
"Content-Type: ${mime}"
);
header(
"Last-Modified:"
.
gmdate
(
"D, d M Y H:i:s"
,
filemtime
(
$cache_file
)) .
" GMT"
);
header(
"Content-Length:"
.
filesize
(
$cache_file
));
echo
file_get_contents
(
$cache_file
);
}
else
{
header(
'404 Not Found'
);
die
("
<h2>Server Error!</h2>
");
}
|
項目已經在 Gitee.com 開源,可以直接去 https://gitee.com/mqycn/Proxy-for-Chinese-programmer/ 下載。
已經實現:
1、支持自動更新 雖然之前可以使用,但是因為 是手工保存到服務器靜態文件,只能使用老的插件。現在設置的每兩小時更新一次
2、在官網出現故障時仍能訪問 在自動和官網同步時,會 判斷 官網是否返回正確的代碼
3、一套最好能支持多個代理 借用 PHP 的PATH_INFO,可以非常方面的傳入任何 URL,可以對全網實現代理。當然,本程序也提供了白名單。
當然代理是有前提的:
1、對於被牆的代理,必須將域名放到 境外服務器
2、對於Sublime Text,服務器必須支持 IPv6
白名單設置說明
配置文件在: proxy/conf/white.json
1
2
3
4
5
6
7
8
9
10
|
[
{
"pattern"
:
"/https\\:\\/\\/packagecontrol\\.io\\/channel_v3\\.json/"
,
"verify"
:
"/\"repositories\"/"
},
{
"pattern"
:
"網址正則正則表達式,只有在列表中匹配到的url才可以訪問"
,
"verify"
:
"內容正則正則表達式,只有返回的內容能匹配本規則,才會寫入緩存。也可以為false,不判斷直接寫入緩存"
},
]
|
作者:那貓小帥
鏈接:https://www.jianshu.com/p/02665121caf9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。