PHP实现抓取Google IP并自动修改hosts文件
无聊中居然又找到个php版本的抓取googlehosts的文件,试了下还可以用,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');
}elseif(in_array(PHP_OS,array('Linux','Darwin','FreeBSD','OpenBSD','WIN32','Windows','Unix'))){
define('HOSTS_FILE_PATH','/etc/hosts');
}else{
die('Unsupportedsystem!'.PHP_EOL);
}
if(!is_writable(HOSTS_FILE_PATH)){
die('Withoutpermission,pleaseusetherootusertoperform!'.PHP_EOL);
}
$hosts=file_get_contents(HOSTS_FILE_PATH);
$startPos=strpos($hosts,START_TAG);
if(!defined('DELETE_GOOGLE_HOST')){
$gs=get_google_hosts();
echoGOOGLE_HOST_URL.PHP_EOL;
echo$gs.PHP_EOL;
}else{
$gs='';
echo'resethosts'.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);
}
functionget_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;
}