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 相关文章推荐
收集的DedeCMS一些使用经验
Mar 17 PHP
php获取某个目录大小的代码
Sep 10 PHP
PHP 程序员也要学会使用“异常”
Jun 16 PHP
php 冒泡排序 交换排序法
May 10 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
php 猴子摘桃的算法
Jun 20 PHP
PHP抽象类与接口的区别详解
Mar 21 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使用者状态管理功能的应用
2006/10/09 PHP
用PHP编写PDF文档生成器
2006/10/09 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
python检测服务器是否正常
2014/02/16 Python
简单实现python爬虫功能
2015/12/31 Python
Python中Threading用法详解
2017/12/27 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
自我鉴定200字
2013/10/28 职场文书
好的演讲稿开场白
2013/12/30 职场文书
小加工厂管理制度
2014/01/21 职场文书
公司授权委托书范文
2014/08/02 职场文书
党员进社区活动总结
2015/05/07 职场文书
mysql脏页是什么
2021/07/26 MySQL
JavaScript组合继承详解
2021/11/07 Javascript
Pygame Time时间控制的具体使用详解
2021/11/17 Python