PHPはGoogle IPをキャプチャしてhostsファイルを自動的に修正することを実現
2592 ワード
退屈な中にまたphpバージョンのgoogle hostsのファイルを捕まえることを見つけて、試してみるとまだ使えます.pingしてipを降りて、遅延もそんなに高くありません.ホームページを開けてテストしても速度が速くて、みんなが興味があれば試してみてください.
hostsファイルを自動的に更新し、既存のレコードを上書きせずに使いやすく、毎回コピーしない->hostsファイルを開く->貼り付けない.
phpファイル:
hostsファイルを自動的に更新し、既存のレコードを上書きせずに使いやすく、毎回コピーしない->hostsファイルを開く->貼り付けない.
phpファイル:
* 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;
}