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 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
PHP cron中的批处理
Sep 16 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
10 个经典PHP函数
Oct 17 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
浅析php适配器模式(Adapter)
Nov 25 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP内存使用情况如何获取
Oct 10 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 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
web方式ftp
2006/10/09 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
短信提示使用 特效
2007/01/19 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python实现端口检测的方法
2018/07/24 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python实现复制文件到指定目录
2019/10/16 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
采购类个人求职的自我评价
2014/02/18 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
中学语文教学反思
2016/02/16 职场文书
python requests模块的使用示例
2021/04/07 Python
python3实现无权最短路径的方法
2021/05/12 Python
Golang解析JSON对象
2022/04/30 Golang