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无限级分类方法及代码
Jun 21 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
php学习笔记之基础知识
Nov 08 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
PHP7新功能总结
Apr 14 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控制文件下载速度的方法
2015/03/24 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
python复制文件的方法实例详解
2015/05/22 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Python-接口开发入门解析
2019/08/01 Python
python标准库os库的函数介绍
2020/02/12 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
露营世界:Camping World
2017/02/02 全球购物
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
信息专业学生学习的自我评价
2014/02/17 职场文书
说明书格式及范文
2014/05/07 职场文书
公证委托书
2014/08/01 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
公司搬迁通知
2015/04/20 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
java基础——多线程
2021/07/03 Java/Android