php 使用curl模擬ip和來(lái)源進(jìn)行訪(fǎng)問(wèn)的實(shí)現(xiàn)方法
對(duì)于限制了ip和來(lái)源的網(wǎng)站,使用正常的訪(fǎng)問(wèn)方式是無(wú)法訪(fǎng)問(wèn)的。本文將介紹一種方法,使用php的curl類(lèi)實(shí)現(xiàn)模擬ip和來(lái)源,訪(fǎng)問(wèn)那些限制了ip和來(lái)源的網(wǎng)站。
1.設(shè)置頁(yè)面限制ip和來(lái)源訪(fǎng)問(wèn)
server.php
<?php $client_ip = getip(); $referer = getreferer(); $allow_ip = '192.168.1.100'; $allow_referer = 'http://www.dbjr.com.cn'; if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){ echo 'allow access'; }else{ echo 'deny access'; } // 獲取訪(fǎng)問(wèn)者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; } // 獲取訪(fǎng)問(wèn)者來(lái)源 function getreferer(){ if(isset($_SERVER['HTTP_REFERER'])){ return $_SERVER['HTTP_REFERER']; } return ''; } ?>
2.使用curl正常訪(fǎng)問(wèn)
<?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; } // 調(diào)用 $url = 'http://www.example.com/server.php'; $response = doCurl($url); echo $response; ?>
返回 deny access
3.使用curl模擬ip和來(lái)源進(jìn)行訪(fǎng)問(wèn)
模擬來(lái)源
curl_setopt($ch, CURLOPT_REFERER, '來(lái)源');
模擬ip
curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 模擬ip','X-FORWARDED-FOR: 模擬ip'));
完整代碼如下:
<?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); // 模擬來(lái)源 curl_setopt($ch, CURLOPT_REFERER, $referer); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; } // 調(diào)用 $url = 'http://www.example.com/server.php'; $data = array(); // 設(shè)置IP $header = array( 'CLIENT-IP: 192.168.1.100', 'X-FORWARDED-FOR: 192.168.1.100' ); // 設(shè)置來(lái)源 $referer = 'http://www.dbjr.com.cn/'; $response = doCurl($url, $data, $header, $referer, 5); echo $response; ?>
返回 allow access
以上這篇php 使用curl模擬ip和來(lái)源進(jìn)行訪(fǎng)問(wèn)的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用PHP curl模擬瀏覽器抓取網(wǎng)站信息
- PHP curl模擬瀏覽器采集阿里巴巴的實(shí)現(xiàn)代碼
- php使用curl模擬瀏覽器表單上傳文件或者圖片的方法
- PHP基于curl實(shí)現(xiàn)模擬微信瀏覽器打開(kāi)微信鏈接的方法示例
- php使用curl訪(fǎng)問(wèn)https示例分享
- php采用curl訪(fǎng)問(wèn)域名返回405 method not allowed提示的解決方法
- php使用curl并發(fā)減少后端訪(fǎng)問(wèn)時(shí)間的方法分析
- PHP基于curl模擬post提交json數(shù)據(jù)示例
- PHP使用Curl實(shí)現(xiàn)模擬登錄及抓取數(shù)據(jù)功能示例
- PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站
- php使用curl偽造瀏覽器訪(fǎng)問(wèn)操作示例
相關(guān)文章
讓php處理圖片變得簡(jiǎn)單 基于gb庫(kù)的圖片處理類(lèi)附實(shí)例代碼下載
讓php處理圖片變得簡(jiǎn)單 基于gb庫(kù)的圖片處理類(lèi)附實(shí)例代碼下載,需要的朋友可以參考下。2011-05-05利用swoole+redis實(shí)現(xiàn)股票和區(qū)塊鏈服務(wù)
這篇文章主要給大家介紹了關(guān)于利用swoole+redis實(shí)現(xiàn)股票和區(qū)塊鏈服務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09通達(dá)OA公共代碼 php常用檢測(cè)函數(shù)
從通達(dá)OA公共代碼扒下的php常用檢測(cè)函數(shù)代碼,學(xué)習(xí)php的朋友可以參考下。2011-12-12php中preg_replace_callback函數(shù)簡(jiǎn)單用法示例
這篇文章主要介紹了php中preg_replace_callback函數(shù)簡(jiǎn)單用法,分析了preg_replace_callback函數(shù)的功能及簡(jiǎn)單使用方法,需要的朋友可以參考下2016-07-07PHP三種方式讀取RSA密鑰加解密、簽名驗(yàn)簽完整教程
RSA是一種非對(duì)稱(chēng)加密算法,它使用一對(duì)密鑰來(lái)進(jìn)行加密和解密操作,這對(duì)密鑰包括公鑰和私鑰,公鑰是用于加密的密鑰,私鑰是用于解密的密鑰,本文介紹了PHP三種方式讀取RSA密鑰加解密、簽名驗(yàn)簽完整教程,需要的朋友可以參考下2024-04-04