无聊中居然又找到个php版本的抓取google hosts的文件,试了下还可以用,ping了下ip,延迟也不是很高,网页打开测试了下速度也很快,大家有兴趣的话可以试试.
自动更新hosts文件, 不覆盖已存在的记录,方便使用,不用每次都 复制->打开hosts文件->粘贴。
php文件:
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
|
<?php
/**
* 免*上google
* @author 自娱自乐自逍遥 <wapznw@gmail.com>
* Date: 2015/2/6
* Time: 11:42
*/
define( 'START_TAG' , '#google-hosts-2015' );
define( 'END_TAG' , '#google-hosts-2015-end' );
if (! empty ( $argv [1])){
$params = array ();
parse_str ( $argv [1], $params );
if (isset( $params [ 'url' ])){
define( 'GOOGLE_HOST_URL' , $params [ 'url' ]);
}
if (isset( $params [ 'del' ])){
define( 'DELETE_GOOGLE_HOST' ,true);
}
}
defined( 'GOOGLE_HOST_URL' ) || define( 'GOOGLE_HOST_URL' , 'http://www.360kb.com/kb/2_150.html' );
define( 'HOSTS_FILE_PATH' , 'C:WindowsSystem32driversetchosts' );
} else if (in_array(PHP_OS, array ( 'Linux' , 'Darwin' , 'FreeBSD' , 'OpenBSD' , 'WIN32' , 'Windows' , 'Unix' ))){
define( 'HOSTS_FILE_PATH' , '/etc/hosts' );
} else {
die ( 'Unsupported system!' .PHP_EOL);
}
if (! is_writable (HOSTS_FILE_PATH)){
die ( 'Without permission, please use the root user to perform!' .PHP_EOL);
}
$hosts = file_get_contents (HOSTS_FILE_PATH);
$startPos = strpos ( $hosts , START_TAG);
if (!defined( 'DELETE_GOOGLE_HOST' )){
$gs = get_google_hosts();
echo GOOGLE_HOST_URL.PHP_EOL;
echo $gs .PHP_EOL;
} else {
$gs = '' ;
echo 'reset hosts' .PHP_EOL;
}
if ( $startPos ){
$_tmp = substr ( $hosts , $startPos , strpos ( $hosts , END_TAG) - $startPos + strlen (END_TAG));
$hosts = str_replace ( $_tmp , $gs , $hosts );
} else {
$hosts .= PHP_EOL. $gs ;
}
$old_file_size = filesize (HOSTS_FILE_PATH);
if ( file_put_contents (HOSTS_FILE_PATH, $hosts )){
die ( 'success. ' .PHP_EOL);
} else {
die ( 'fail' .PHP_EOL);
}
function get_google_hosts(){
$html = file_get_contents (GOOGLE_HOST_URL);
$html = strip_tags ( $html );
$startPos = strpos ( $html , START_TAG);
$html = substr ( $html , $startPos , strpos ( $html ,END_TAG) - $startPos );
$html = str_replace ( ' ' , ' ' , $html );
return $html .PHP_EOL.END_TAG;
}
|