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,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
Laravel 5框架学习之表单
Apr 08 PHP
php字符串的替换,分割和连接方法
May 23 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 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
php 引用(&amp;)详解
2009/11/20 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
js表头排序实现方法
2015/01/16 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
vue实现微信分享功能
2018/11/28 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
学习python (1)
2006/10/31 Python
python+opencv实现动态物体识别
2018/01/09 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
python中常用的数据结构介绍
2021/01/12 Python
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
运动会稿件100字
2014/02/21 职场文书
单位工作证明书格式
2014/10/04 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
投标单位介绍信
2015/05/05 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书