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

 更新时间:2015年02月12日 09:40:45   投稿:junjie  
这篇文章主要介绍了PHP实现抓取Google IP并自动修改hosts文件,本文方法可以实现免翻墙上google,小编亲测可用,需要的朋友可以参考下

无聊中居然又找到个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('&nbsp;',' ',$html);
 return $html.PHP_EOL.END_TAG;
}

相关文章

  • Swoole4.4协程抢占式调度器详解

    Swoole4.4协程抢占式调度器详解

    这篇文章主要介绍了Swoole4.4协程抢占式调度器详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Thinkphp5 自定义上传文件名的实现方法

    Thinkphp5 自定义上传文件名的实现方法

    这篇文章主要介绍了Thinkphp5 自定义上传文件名的实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • PHP中递归的实现实例详解

    PHP中递归的实现实例详解

    递归(http:/en.wikipedia.org/wiki/Recursive)是一种函数调用自身(直接或间接)的一种机制,这种强大的思想可以把某些复杂的概念变得极为简单。这篇文章主要介绍了PHP中递归的实现实例详解,需要的朋友可以参考下
    2017-11-11
  • thinkphp3.2实现在线留言提交验证码功能

    thinkphp3.2实现在线留言提交验证码功能

    这篇文章主要为大家详细介绍了TP3.2写提交的验证码验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • PHP处理二进制数据的实现方法

    PHP处理二进制数据的实现方法

    下面小编就为大家带来一篇PHP处理二进制数据的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • php正则去除网页中所有的html,js,css,注释的实现方法

    php正则去除网页中所有的html,js,css,注释的实现方法

    下面小编就为大家带来一篇php正则去除网页中所有的html,js,css,注释的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • destoon官方标签大全

    destoon官方标签大全

    这篇文章主要介绍了destoon的标签,需要的朋友可以参考下
    2014-06-06
  • 浅谈PHP array_search 和 in_array 函数效率问题

    浅谈PHP array_search 和 in_array 函数效率问题

    这篇文章主要介绍了浅谈PHP array_search 和 in_array 函数效率问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • PHP 获取视频时长的实例代码

    PHP 获取视频时长的实例代码

    本文通过实例代码给大家介绍了php获取视频时长的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • php获取汉字首字母的函数

    php获取汉字首字母的函数

    本文介绍用php实现汉字转化为首字母的方法,主要功能是:功能明确,易于修改维护和扩展; 英文的字串:不变返回(包括数字);中文字符串:返回拼音首字符; 中英混合串: 返回拼音首字符和英文
    2013-11-11

最新评论