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下批量挂马和批量清马代码
Feb 27 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php使用百度天气接口示例
Apr 22 PHP
试用php中oci8扩展
Jun 18 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
PHP asXML()函数讲解
Feb 03 PHP
Laravel配合jwt使用的方法实例
Oct 25 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时间不正确的解决方法
2008/04/09 PHP
PHP中的extract的作用分析
2008/04/09 PHP
学习php开源项目的源码指南
2014/12/21 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
php7下的filesize函数
2019/09/30 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
python实现简单坦克大战
2020/03/27 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
春节联欢会主持词
2014/03/24 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
2014年收银工作总结
2014/11/13 职场文书
2014年电教工作总结
2014/12/19 职场文书
面试感谢信范文
2015/01/22 职场文书
房贷工资证明范本
2015/06/12 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python