欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP实现抓取Google IP并自动修改hosts文件

程序员文章站 2022-05-15 09:34:17
无聊中居然又找到个php版本的抓取google hosts的文件,试了下还可以用,ping了下ip,延迟也不是很高,网页打开测试了下速度也很快,大家有兴趣的话可以试试....

无聊中居然又找到个php版本的抓取google hosts的文件,试了下还可以用,ping了下ip,延迟也不是很高,网页打开测试了下速度也很快,大家有兴趣的话可以试试.

自动更新hosts文件, 不覆盖已存在的记录,方便使用,不用每次都 复制->打开hosts文件->粘贴。

php文件:

<?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');

if(php_os == 'winnt'){
 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;
}