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 类型转换函数intval
Jun 20 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
隐性调用php程序的方法
Jun 13 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
PHP函数func_num_args用法实例分析
Dec 07 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
php连接oracle数据库的核心步骤
May 26 PHP
php外部执行命令函数用法小结
Oct 11 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
如何用Laravel包含你自己的帮助函数
May 27 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 is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
python中bytes和str类型的区别
2019/10/21 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
《石榴》教学反思
2014/03/02 职场文书
建议书标准格式
2014/03/12 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
微电影大赛策划方案
2014/06/05 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
试了下Golang实现try catch的方法
2021/07/01 Golang
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android