php 使用curl模擬ip和來源進行訪問的實現(xiàn)方法
對于限制了ip和來源的網(wǎng)站,使用正常的訪問方式是無法訪問的。本文將介紹一種方法,使用php的curl類實現(xiàn)模擬ip和來源,訪問那些限制了ip和來源的網(wǎng)站。
1.設(shè)置頁面限制ip和來源訪問
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'; } // 獲取訪問者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.使用curl正常訪問
<?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和來源進行訪問
模擬來源
curl_setopt($ch, CURLOPT_REFERER, '來源');
模擬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); // 模擬來源 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è)置來源 $referer = 'http://www.dbjr.com.cn/'; $response = doCurl($url, $data, $header, $referer, 5); echo $response; ?>
返回 allow access
以上這篇php 使用curl模擬ip和來源進行訪問的實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 使用PHP curl模擬瀏覽器抓取網(wǎng)站信息
- PHP curl模擬瀏覽器采集阿里巴巴的實現(xiàn)代碼
- php使用curl模擬瀏覽器表單上傳文件或者圖片的方法
- PHP基于curl實現(xiàn)模擬微信瀏覽器打開微信鏈接的方法示例
- php使用curl訪問https示例分享
- php采用curl訪問域名返回405 method not allowed提示的解決方法
- php使用curl并發(fā)減少后端訪問時間的方法分析
- PHP基于curl模擬post提交json數(shù)據(jù)示例
- PHP使用Curl實現(xiàn)模擬登錄及抓取數(shù)據(jù)功能示例
- PHP curl模擬登錄帶驗證碼的網(wǎng)站
- php使用curl偽造瀏覽器訪問操作示例
相關(guān)文章
讓php處理圖片變得簡單 基于gb庫的圖片處理類附實例代碼下載
讓php處理圖片變得簡單 基于gb庫的圖片處理類附實例代碼下載,需要的朋友可以參考下。2011-05-05利用swoole+redis實現(xiàn)股票和區(qū)塊鏈服務(wù)
這篇文章主要給大家介紹了關(guān)于利用swoole+redis實現(xiàn)股票和區(qū)塊鏈服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習下吧。2017-09-09php中preg_replace_callback函數(shù)簡單用法示例
這篇文章主要介紹了php中preg_replace_callback函數(shù)簡單用法,分析了preg_replace_callback函數(shù)的功能及簡單使用方法,需要的朋友可以參考下2016-07-07