首页 > 开发 > PHP > 正文

php 使用curl模拟ip和来源进行访问的实现方法

2024-05-04 22:47:57
字体:
来源:转载
供稿:网友

对于限制了ip和来源的网站,使用正常的访问方式是无法访问的。本文将介绍一种方法,使用php的curl类实现模拟ip和来源,访问那些限制了ip和来源的网站。

1.设置页面限制ip和来源访问

server.php

<?php$client_ip = getip();$referer = getreferer();$allow_ip = '192.168.1.100';$allow_referer = '//www.jb51.net';if($client_ip==$allow_ip && strpos($referer, $allow_referer)===0){  echo 'allow access';}else{  echo 'deny access';}// 获取访问者ipfunction 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正常访问

<?phpfunction 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;?>

返回 deny access

3.使用curl模拟ip和来源进行访问

模拟来源

curl_setopt($ch, CURLOPT_REFERER, '来源');

模拟ip

curl_setopt($ch, CURLOPT_HTTPHEADER, array('CLIENT-IP: 模拟ip','X-FORWARDED-FOR: 模拟ip'));

完整代码如下:

<?phpfunction 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 = '//www.jb51.net/';$response = doCurl($url, $data, $header, $referer, 5);echo $response;?>

返回 allow access

以上这篇php 使用curl模拟ip和来源进行访问的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持错新站长站。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表