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


Posted in PHP onFebruary 12, 2015

无聊中居然又找到个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 相关文章推荐
PHP的面试题集
Nov 19 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
PHP Try-catch 语句使用技巧
Feb 28 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
解决Laravel使用验证时跳转到首页的问题
Nov 17 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 #PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 #PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 #PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 #PHP
php使用类继承解决代码重复的问题
Feb 11 #PHP
php中使用url传递数组的方法
Feb 11 #PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 #PHP
You might like
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
js几个不错的函数 $$()
2006/10/09 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
python中函数传参详解
2016/07/03 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
python中强大的format函数实例详解
2018/12/05 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
Python 串口通信的实现
2020/09/29 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
servlet面试题
2012/08/20 面试题
微电影大赛策划方案
2014/06/05 职场文书
迎国庆横幅标语
2014/10/08 职场文书
羊脂球读书笔记
2015/06/30 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python