php 使用curl模擬ip和來(lái)源進(jìn)行訪問(wèn)的實(shí)現(xiàn)方法
對(duì)于限制了ip和來(lái)源的網(wǎng)站,使用正常的訪問(wèn)方式是無(wú)法訪問(wèn)的。本文將介紹一種方法,使用php的curl類實(shí)現(xiàn)模擬ip和來(lái)源,訪問(wèn)那些限制了ip和來(lái)源的網(wǎng)站。
1.設(shè)置頁(yè)面限制ip和來(lái)源訪問(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';
}
// 獲取訪問(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;
}
// 獲取訪問(wèn)者來(lái)源
function getreferer(){
if(isset($_SERVER['HTTP_REFERER'])){
return $_SERVER['HTTP_REFERER'];
}
return '';
}
?>
2.使用curl正常訪問(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)行訪問(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)行訪問(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)模擬微信瀏覽器打開微信鏈接的方法示例
- php使用curl訪問(wèn)https示例分享
- php采用curl訪問(wèn)域名返回405 method not allowed提示的解決方法
- php使用curl并發(fā)減少后端訪問(wèn)時(shí)間的方法分析
- PHP基于curl模擬post提交json數(shù)據(jù)示例
- PHP使用Curl實(shí)現(xiàn)模擬登錄及抓取數(shù)據(jù)功能示例
- PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站
- php使用curl偽造瀏覽器訪問(wèn)操作示例
相關(guān)文章
讓php處理圖片變得簡(jiǎn)單 基于gb庫(kù)的圖片處理類附實(shí)例代碼下載
讓php處理圖片變得簡(jiǎn)單 基于gb庫(kù)的圖片處理類附實(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-12
php中preg_replace_callback函數(shù)簡(jiǎn)單用法示例
這篇文章主要介紹了php中preg_replace_callback函數(shù)簡(jiǎn)單用法,分析了preg_replace_callback函數(shù)的功能及簡(jiǎn)單使用方法,需要的朋友可以參考下2016-07-07
PHP三種方式讀取RSA密鑰加解密、簽名驗(yàn)簽完整教程
RSA是一種非對(duì)稱加密算法,它使用一對(duì)密鑰來(lái)進(jìn)行加密和解密操作,這對(duì)密鑰包括公鑰和私鑰,公鑰是用于加密的密鑰,私鑰是用于解密的密鑰,本文介紹了PHP三種方式讀取RSA密鑰加解密、簽名驗(yàn)簽完整教程,需要的朋友可以參考下2024-04-04

