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; }