-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathAutoUpdateHosts.ahk
100 lines (83 loc) · 2.33 KB
/
AutoUpdateHosts.ahk
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 自动更新Hosts文件
; 源项目参见 https://github.com/racaljk/hosts
;
; gaochao.morgen@gmail.com
; 2016/11/10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#Persistent
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
FileEncoding, UTF-8-RAW
SYSHOSTS := "C:\Windows\System32\drivers\etc\hosts"
;URL := "https://raw.githubusercontent.com/racaljk/hosts/master/hosts"
URL := "https://raw.githubusercontent.com/googlehosts/hosts/master/hosts-files/hosts"
; 手动添加 raw.githubusercontent.com 的IP,否则从这个网站下载文件很困难
; 至于这个IP,可以从 http://tool.chinaz.com/dns 上查询,选择速度快的一个
FileAppend,
(
`r
151.101.76.133 raw.githubusercontent.com
), % SYSHOSTS
; 刷新DNS
RunWait, cmd /c "ipconfig /flushdns",, Hide
; 下载 hosts 文件
ToolTipX := A_ScreenWidth / 2
ToolTipY := A_ScreenHeight / 2
ToolTip, 正在下载 Hosts 文件, %ToolTipX%, %ToolTipY%
SetTimer, RemoveToolTip, 1000
HostsFile := A_Temp "\hosts"
try {
URLDownloadToFile, % URL, % HostsFile
if (ErrorLevel == 1)
throw Exception("Fail", -1)
}
catch
{
; 尝试爬虫方案
try {
ToolTip, 直接下载失败,尝试爬虫方案, %ToolTipX%, %ToolTipY%
RunWait, cmd /c "python gethosts.py",, Hide
if (ErrorLevel != 0)
throw Exception("Fail", -1)
Sleep, 100 ; Wait writing file
FileCopy, hosts.parsed, % HostsFile
}
catch
{
MsgBox, 下载失败,请重新尝试
ExitApp
}
}
FileAppend,
(
`r
151.101.76.133 assets-cdn.github.com
151.101.76.133 raw.githubusercontent.com
), % HostsFile
; 备份原来的hosts文件
backupCmd := "copy "
backupCmd .= SYSHOSTS
backupCmd .= " "
backupCmd .= SYSHOSTS
backupCmd .= A_Now
RunWait, cmd /c %backupCmd%,, Hide
; 将新的hosts文件拷贝到系统路径
copyCmd := "copy /Y "
copyCmd .= HostsFile
copyCmd .= " "
copyCmd .= SYSHOSTS
RunWait, cmd /c %copyCmd%,, Hide
; 刷新DNS
RunWait, cmd /c "ipconfig /flushdns",, Hide
FileDelete, % HostsFile
MsgBox, 更新完毕!
ExitApp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 函数 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
Return