php 使用curl模擬ip和來源進(jìn)行訪問的實(shí)現(xiàn)方法
對(duì)于限制了ip和來源的網(wǎng)站,使用正常的訪問方式是無法訪問的。本文將介紹一種方法,使用php的curl類實(shí)現(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.dhdzp.com';
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和來源進(jìn)行訪問
模擬來源
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.dhdzp.com/';
$response = doCurl($url, $data, $header, $referer, 5);
echo $response;
?>
返回 allow access
以上這篇php 使用curl模擬ip和來源進(jìn)行訪問的實(shí)現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用PHP curl模擬瀏覽器抓取網(wǎng)站信息
- PHP curl模擬瀏覽器采集阿里巴巴的實(shí)現(xiàn)代碼
- php使用curl模擬瀏覽器表單上傳文件或者圖片的方法
- PHP基于curl實(shí)現(xiàn)模擬微信瀏覽器打開微信鏈接的方法示例
- php使用curl訪問https示例分享
- php采用curl訪問域名返回405 method not allowed提示的解決方法
- php使用curl并發(fā)減少后端訪問時(shí)間的方法分析
- PHP基于curl模擬post提交json數(shù)據(jù)示例
- PHP使用Curl實(shí)現(xiàn)模擬登錄及抓取數(shù)據(jù)功能示例
- PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站
- php使用curl偽造瀏覽器訪問操作示例
相關(guān)文章
php 正確解碼javascript中通過escape編碼后的字符
js的escape如何在PHP中來解呢?下面的這個(gè)函數(shù)可以正確的解析,網(wǎng)上有不少unescape的函數(shù),但好用的不多.2010-01-01
php中isset與empty函數(shù)的困惑與用法分析
這篇文章主要介紹了php中isset與empty函數(shù)的困惑與用法,結(jié)合實(shí)例形式分析了php中isset與empty函數(shù)的功能、用法、區(qū)別及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2019-07-07
在WordPress中實(shí)現(xiàn)發(fā)送http請(qǐng)求的相關(guān)函數(shù)解析
這篇文章主要介紹了在WordPress中實(shí)現(xiàn)發(fā)送http請(qǐng)求的相關(guān)函數(shù)解析,包括使用WP_Http類中的函數(shù)來發(fā)送post或get請(qǐng)求的方法,需要的朋友可以參考下2015-12-12
PHP中set_include_path()函數(shù)相關(guān)用法分析
這篇文章主要介紹了PHP中set_include_path()函數(shù)相關(guān)用法,結(jié)合實(shí)例形式分析了php針對(duì)文件路徑設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
一致性哈希算法以及其PHP實(shí)現(xiàn)詳細(xì)解析
以下是對(duì)用PHP實(shí)現(xiàn)一致性哈希算法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-08-08
PHP通過get方法獲得form表單數(shù)據(jù)方法總結(jié)
這篇文章我們給大家介紹了PHP如何通過get的方式來得到獲取form表單數(shù)據(jù)的方法,有需要的朋友們參考下。2018-09-09
php自動(dòng)注冊(cè)登錄驗(yàn)證機(jī)制實(shí)現(xiàn)代碼
在phpwind站點(diǎn)后臺(tái)添加一個(gè)名為“廣告管家”(廣告管家為CNZZ的一款廣告投放的應(yīng)用)的應(yīng)用,整個(gè)“廣告管家”的應(yīng)用是通過iframe載入,載入的具體內(nèi)容根據(jù)不同站點(diǎn)顯示針對(duì)該站點(diǎn)的具體內(nèi)容2011-12-12

