Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mensimulasikan akses IP yang berbeza dalam php
Cara mensimulasikan akses IP yang berbeza dalam PHP: 1. Tetapkan halaman untuk menyekat akses IP dan sumber 2. Gunakan curl untuk akses biasa 3. Gunakan curl untuk mensimulasikan akses IP dan sumber, dengan kod seperti "curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: ip','X-FORWARDED-FOR: ip'));".
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Cara mensimulasikan akses ip yang berbeza dalam php
kaedah pelaksanaan php menggunakan curl untuk mensimulasikan ip dan sumber untuk akses
Sekatan Tapak web tanpa alamat IP dan sumber tidak boleh diakses menggunakan kaedah capaian biasa. Artikel ini akan memperkenalkan kaedah untuk menggunakan kelas curl PHP untuk mensimulasikan IP dan sumber serta mengakses tapak web dengan IP dan sumber terhad.
1. Tetapkan sekatan halaman untuk akses IP dan sumber
pelayan.php
<?php $client_ip = getip(); $referer = getreferer(); $allow_ip = '192.168.1.100'; $allow_referer = 'https://www.jb51.net'; if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){ echo 'allow access'; }else{ echo 'deny access'; } // 获取访问者ip function getip(){ if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $cip = $_SERVER['HTTP_CLIENT_IP']; }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $cip = $_SERVER['HTTP_X_FORWARDED_FOR']; }elseif(!empty($_SERVER['REMOTE_ADDR'])){ $cip = $_SERVER['REMOTE_ADDR']; }else{ $cip = ''; } return $cip; } // 获取访问者来源 function getreferer(){ if(isset($_SERVER['HTTP_REFERER'])){ return $_SERVER['HTTP_REFERER']; } return ''; } ?>
2. Gunakan curl untuk akses biasa
<?php function doCurl($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; } // 调用 $url = 'http://www.example.com/server.php'; $response = doCurl($url); echo $response; ?>
Kembali untuk menolak akses
3 Gunakan curl untuk mensimulasikan ip dan sumber untuk mengakses
Simulasi sumber
curl_setopt($ch, CURLOPT_REFERER, '来源');
Simulasi ip
curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 模拟ip','X-FORWARDED-FOR: 模拟ip'));
Simulasi kod lengkap adalah seperti berikut:
<?php function doCurl($url, $data=array(), $header=array(), $referer='', $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 模拟来源 curl_setopt($ch, CURLOPT_REFERER, $referer); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; } // 调用 $url = 'http://www.example.com/server.php'; $data = array(); // 设置IP $header = array( 'CLIENT-IP: 192.168.1.100', 'X-FORWARDED-FOR: 192.168.1.100' ); // 设置来源 $referer = 'https://www.jb51.net/'; $response = doCurl($url, $data, $header, $referer, 5); echo $response; ?>
Kembali untuk membenarkan akses
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk mensimulasikan akses IP yang berbeza dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!