errorcode418/php
0
1<?php2 3/*4* 原项目开源地址:https://github.com/xhboke/IP5* 二开开源地址:https://github.com/2031301686/ip-sign/6* 更新地址:https://wxsnote.cn/2762.html7* 二开作者:天无神话-王先生笔记8* 博客地址:https://wxsnote.cn/2762.html9*/10 11 12header("Content-type: image/JPEG");13use UAParser\Parser;14require_once './vendor/autoload.php';15 16//获取真实IP,注意主要为CDN站点服务,若无CDN,有被伪造的可能17function wxs_get_ip() {18 if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {19 $ip = getenv('HTTP_CLIENT_IP');20 } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {21 $ip = getenv('HTTP_X_FORWARDED_FOR');22 } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {23 $ip = getenv('REMOTE_ADDR');24 } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {25 $ip = $_SERVER['REMOTE_ADDR'];26 }27 return preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches[0] : '';28}29 30 31//公共变量32$ip = wxs_get_ip();33$ua = $_SERVER['HTTP_USER_AGENT'];34$get = $_GET["s"];35$get = base64_decode(str_replace(" ","+",$get));36$weekarray = array("日","一","二","三","四","五","六");37//ua38$parser = Parser::create();39$result = $parser->parse($ua);40$os = $result->os->toString();41// Mac OS X42$browser = $result->device->family.'-'.$result->ua->family;43// Safari 6.0.2 44 45//必须信息46//高德key47$gd_key = 'f80829927c887932b780ccf933ee8326';48$gd_Secret_key ="f80829927c887932b780ccf933ee8326";49//腾讯key50$tx_key = 'EM5BZ-BTAKZ-NEGXD-7JXQ4-SDJUZ-O2B6V';51$tx_Secret_key ="RtFKvYzBMNNPHutQseF5ne5LAutiCp6o";52 53 54//高德api55function gd_api($ip, $gd_key, $gd_Secret_key) {56 $gd_api_url = 'http://restapi.amap.com/v3/ip?key='.$gd_key.'&ip='.$ip;57 58 if ($gd_Secret_key) {59 $gd_api_url .= '&sig=' . md5('ip=' . $ip . '&key=' . $gd_key . $gd_Secret_key);60 }61 62 $UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';63 $curl = curl_init();64 curl_setopt($curl, CURLOPT_URL, $gd_api_url);65 curl_setopt($curl, CURLOPT_HEADER, 0);66 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);67 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);68 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);69 curl_setopt($curl, CURLOPT_ENCODING, '');70 curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);71 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);72 $data = curl_exec($curl);73 // 将JSON响应转换为关联数组74 $data = json_decode($data, true);75 76 // 提取province和city77 $province = $data['province'];78 $city = $data['city'];79 80 // 返回仅包含province和city的数组81 return array('province' => $province, 'city' => $city);82}83 84 85//腾讯api86function tx_api($ip, $tx_key, $tx_Secret_key) {87 //通过腾讯接口获取88 $tx_api_url = 'http://apis.map.qq.com/ws/location/v1/ip?ip=' . $ip . '&key=' . $tx_key;89 //签名校验90 if ($tx_Secret_key) {91 $tx_api_url .= '&sig=' . md5('/ws/location/v1/ip?ip=' . $ip . '&key=' . $tx_key . $tx_Secret_key);92 }93 94 $UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';95 $curl = curl_init();96 curl_setopt($curl, CURLOPT_URL, $tx_api_url);97 curl_setopt($curl, CURLOPT_HEADER, 0);98 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);99 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);100 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);101 curl_setopt($curl, CURLOPT_ENCODING, '');102 curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);103 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);104 $data = curl_exec($curl);105 // 将JSON响应转换为关联数组106 $data = json_decode($data, true);107 108 // 提取province和city109 $province = $data['result']['ad_info']['province'];110 $city = $data['result']['ad_info']['city'];111 112 // 返回仅包含province和city的数组113 return array('province' => $province, 'city' => $city);114}115 116 117//太平洋api118function tpy_api($ip) {119 120 $tpy_api_url = 'http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=' . $ip;121 $UserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36';122 123 $curl = curl_init();124 curl_setopt($curl, CURLOPT_URL, $tpy_api_url);125 curl_setopt($curl, CURLOPT_HEADER, 0);126 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);127 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);128 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);129 curl_setopt($curl, CURLOPT_ENCODING, '');130 curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);131 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);132 $data = curl_exec($curl);133 $data = mb_convert_encoding($data, 'UTF-8', 'GBK');134 135 // 将JSON响应转换为关联数组136 $data = json_decode($data, true);137 138 if(isset($data['pro'])) {139 $province = $data['pro'];140 }141 142 if(isset($data['city'])) {143 $city = $data['city'];144 }145 146 // 返回仅包含province和city的数组147 return array('province' => $province, 'city' => $city);148}149 150 151// 调用高德API152$gd_data = gd_api($ip, $gd_key, $gd_Secret_key);153 154// 处理高德API返回的数据155$gd_data_json = json_encode($gd_data);156$gd_data = json_decode($gd_data_json, true);157 158// 判断高德API返回数据是否包含地址信息159if (!empty($gd_data['province']) && !empty($gd_data['city'])) {160 // 判断省份和城市是否相同,如果相同则只输出城市161 if ($gd_data['province'] == $gd_data['city']) {162 $address = $gd_data['city'];163 } else {164 $address = $gd_data['province'] . '-' . $gd_data['city'];165 }166} else {167 // 调用腾讯API168 $tx_data = tx_api($ip, $tx_key, $tx_Secret_key);169 170 // 处理腾讯API返回的数据171 $tx_data_json = json_encode($tx_data);172 $tx_data = json_decode($tx_data_json, true);173 174 // 判断腾讯API返回数据是否包含地址信息175 if (!empty($tx_data['province']) && !empty($tx_data['city'])) {176 // 判断省份和城市是否相同,如果相同则只输出城市177 if ($tx_data['province'] == $tx_data['city']) {178 $address = $tx_data['city'];179 } else {180 $address = $tx_data['province'] . '-' . $tx_data['city'];181 }182 } else {183 // 调用太平洋API184 $tpy_data = tpy_api($ip);185 186 // 判断太平洋API返回数据是否包含地址信息187 if (!empty($tpy_data['province']) && !empty($tpy_data['city'])) {188 // 判断省份和城市是否相同,如果相同则只输出城市189 if ($tpy_data['province'] == $tpy_data['city']) {190 $address = $tpy_data['city'];191 } else {192 $address = $tpy_data['province'] . '-' . $tpy_data['city'];193 }194 } else {195 $address = '神秘星球';196 }197 }198}199 200//定义背景201$im = imagecreatefromjpeg("./xhxh.jpg");202//定义颜色203$black = ImageColorAllocate($im, 0,0,0);204//定义颜色的值为红色205$blue = ImageColorAllocate($im, 30,232,255);206//加载字体207$font = 'msyh.ttf';208//输出209imagettftext($im, 15, 0, 30, 40, $black, $font,'欢迎您,来自 Linux.do 的朋友');210imagettftext($im, 15, 0, 30, 80, $black, $font, '今天是'.date('Y年n月j日').' 星期'.$weekarray[date("w")]);211//当前时间添加到图片212imagettftext($im, 15, 0, 30, 120, $black, $font,'您的IP是:'.$ip.'');213//ip214imagettftext($im, 15, 0, 30, 160, $black, $font,'您使用的是'.$os.'操作系统');215imagettftext($im, 13, 0, 30, 190, $black, $font,'Powerd by PHP-7.2');216ImageGif($im);217ImageDestroy($im);218function curl_get($url, array $params = array(), $timeout = 6) {219 $ch = curl_init();220 curl_setopt($ch, CURLOPT_URL, $url);221 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);222 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);223 $file_contents = curl_exec($ch);224 curl_close($ch);225 return $file_contents;226}227?>228 