网站A是开发好的一个成品站!可以免费/收费使用,或者条件啥!但是有点技术的可以拷贝源码搭建!B站就是授权后台网站
防止普通用户拷贝就是授权!
写了一个简单的访问控制!
速度略有下降,但这点性能忽略不计!
流程A站用户打开会去访问B站的接口 查询数据库是否授权 ,没授权就停止运行,授权就继续运行! B站的接口判断是否同一个ip(有的用户可能是同一个ip绑定多个域名)
A站代码如下
1 // //访问网站 2 $method = ‘DES-ECB‘;//加密方法 3 $passwd = ‘qq496631085‘;//加密密钥 4 $options = 0;//数据格式选项(可选) 5 $iv = ‘‘;//加密初始化向量(可选) 6 $url = base64_decode(‘aHR0cDovL2FkbWluLmhlNDk2Ni5jbi9pbmRleC5waHAvYXBpL2hlL2dldGRhdGEvdXJsLw==‘).base64_encode(Request::domain()); 7 // halt($url); 8 $result = file_get_contents($url); 9 $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0)); 10 $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-7-3); 11 $data = json_decode(base64_decode($jiemi1)); 12 $date = $data->date; 13 if(strtotime($date)<time()+50){ 14 echo $data->msg; 15 exit(); 16 }
B站大概代码如下(初稿,没经过细节优化,时间来不及)B站是写的一个接口
1 public function getdata() 2 { 3 4 // json 5 // 6 // endtime 7 // lasttime 8 // createtime 9 // updatetime 10 // deletetime 11 // weigh 12 // switch 13 // state 14 15 //获取域名 或者ip 16 $data[‘ip‘] = $this->request->ip(); 17 $data[‘url‘] = base64_decode($this->request->param(‘url‘)); 18 // halt($data); 19 //先判断是否有这个ip和域名, 20 21 22 $res = $this->addnew($data); 23 24 $this->tongip($data); 25 $res = Db::name(‘shouquan‘) 26 ->where($data) 27 ->find(); 28 29 // if(!$res){//没有就新增 30 31 // exit($this->no($data)); 32 33 // }else{//有就判断是否授权 !然后 返回数据 34 35 if($res[‘state‘]==1){ 36 //授权过的返回正常加密 37 // return json([‘code‘=>1,‘data‘=>$this->ok($data)]); 38 exit($this->ok($res)); 39 }else{ 40 41 exit($this->no($data)); 42 } 43 // } 44 //views 45 46 $data[‘title‘] = ‘‘;//获取配置 47 48 halt($data); 49 $this->success(‘请求成功‘); 50 } 51 52 53 public function tongip($data) 54 { 55 $tongip = Db::name(‘shouquan‘) 56 ->where(‘ip‘,$data[‘ip‘]) 57 ->where(‘state‘,1) 58 ->find(); 59 if($tongip){ 60 $this->addnew($data); 61 $update = Db::name(‘shouquan‘)->where($data)->update([‘state‘=>1,‘updatetime‘=>time()]); 62 exit($this->ok($data)); 63 }else{ 64 exit($this->no($data)); 65 } 66 } 67 68 public function addnew($data) 69 { 70 71 $res = Db::name(‘shouquan‘) 72 ->where($data) 73 ->find(); 74 if(!$res){ 75 $data[‘endtime‘] = 0; 76 $data[‘createtime‘] = time(); 77 $data[‘state‘] = 0; 78 $data[‘switch‘] = 0; 79 $insert = Db::name(‘shouquan‘)->insert($data); 80 return true; 81 }else{ 82 Db::name(‘shouquan‘)->where($data)->setInc(‘views‘); 83 Db::name(‘shouquan‘)->where($data)->update([‘lasttime‘=>time()]); 84 return false;//有数据 85 } 86 } 87 88 89 public function ok($data = null) 90 { 91 $json[‘date‘] = date(‘Y-m-d H:i:s‘,strtotime(date(‘Y-m-d‘)." +1 day")); 92 // $json[‘url‘] = $data[‘url‘]; 93 // $json[‘ulr‘] = ‘http://admin.he4966.cn/index.php/api/he/ok‘; 94 $json[‘ip‘] =$data[‘ip‘]; 95 $json[‘url‘] =$data[‘url‘]; 96 97 $strs = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm"; 98 $qian = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),3); 99 $hou = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),7); 100 // var_dump(json_encode($json)); 101 $data1 = $qian.base64_encode(json_encode($json)).$hou; 102 103 // var_dump($data); 104 // echo ‘<br>加密前‘.$data.‘<br>‘; 105 // $data = ‘1234567887654321‘;//加密明文 106 $method = ‘DES-ECB‘;//加密方法 107 $passwd = ‘qq496631085‘;//加密密钥 108 $options = 0;//数据格式选项(可选) 109 $iv = ‘‘;//加密初始化向量(可选) 110 111 112 //加密: 113 $result = openssl_encrypt($data1, $method, $passwd, $options); 114 // var_dump($result); 115 //结果:string(32) "kQYOdswcm9I5elv2wdJucplqAgqDNqXg" 116 117 118 119 return $result; 120 //解密 121 // $result = ‘kQYOdswcm9I5elv2wdJucplqAgqDNqXg‘; 122 $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0)); 123 // var_dump($jiemi2); 124 // echo ‘<br>‘.‘解密后‘.$jiemi2.‘<br>‘; 125 $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-10); 126 // var_dump($jiemi1); 127 halt(json_decode(base64_decode($jiemi1))); 128 //结果:string(16) "1234567887654321" 129 130 131 halt(base64_encode($data)); 132 // return $json; 133 } 134 135 public function no($data = null) 136 { 137 $json[‘date‘] = date(‘Y-m-d H:i:s‘,time()+10); 138 // $json[‘url‘] = $data[‘url‘]; 139 // $json[‘ulr‘] = ‘http://admin.he4966.cn/index.php/api/he/ok‘; 140 $json[‘msg‘] = date("当前时间Y-m-d H:i:s")."<br>网站未授权请联系QQ496631085"; 141 $json[‘ip‘] =$data[‘ip‘]; 142 $json[‘url‘] =$data[‘url‘]; 143 144 $strs = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm"; 145 $qian = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),3); 146 $hou = substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),7); 147 // var_dump(json_encode($json)); 148 $data1 = $qian.base64_encode(json_encode($json)).$hou; 149 150 // var_dump($data); 151 // echo ‘<br>加密前‘.$data.‘<br>‘; 152 // $data = ‘1234567887654321‘;//加密明文 153 $method = ‘DES-ECB‘;//加密方法 154 $passwd = ‘qq496631085‘;//加密密钥 155 $options = 0;//数据格式选项(可选) 156 $iv = ‘‘;//加密初始化向量(可选) 157 158 159 //加密: 160 $result = openssl_encrypt($data1, $method, $passwd, $options); 161 // var_dump($result); 162 //结果:string(32) "kQYOdswcm9I5elv2wdJucplqAgqDNqXg" 163 164 165 166 return $result; 167 //解密 168 // $result = ‘kQYOdswcm9I5elv2wdJucplqAgqDNqXg‘; 169 $jiemi2 = (openssl_decrypt($result, $method, $passwd, 0)); 170 // var_dump($jiemi2); 171 // echo ‘<br>‘.‘解密后‘.$jiemi2.‘<br>‘; 172 $jiemi1 = substr($jiemi2,3,strlen($jiemi2)-7-3); 173 // var_dump($jiemi1); 174 halt(json_decode(base64_decode($jiemi1))); 175 //结果:string(16) "1234567887654321" 176 177 178 halt(base64_encode($data)); 179 // return $json; 180 }
QQ496631085