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

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

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

PHP文件:

rush:PHP;"> PHP /** * 免翻墙上google * @author 自娱自乐自逍遥 * 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,strpos($html,END_TAG) - $startPos);
$html = str_replace('',' ',$html);
return $html.PHP_EOL.END_TAG;
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...