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

5年以前  |  阅读数:481 次  |  编程语言:PHP 

无聊中居然又找到个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;
    }
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例