PHP 伪装IP地址 数据采集 GET、POST请求

article/2025/10/16 3:20:20

大家都知道,你采集别人的网站,可能封掉你的IP地址,那么肯定就不能用自己的真实IP地址了,今天我们就浅谈PHP伪装IP地址,进行数据采集!

首先,我用的是TP5框架,把IP伪装及数据采集封装到common.php中了,代码如下:

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------// 应用公共文件
use think\Db;/*************************************  封装公共方法 *****************************************/
/*** 伪装IP 地址 - 抓取数据* GET 请求* @param $url* @return mixed*/
function pretendIpData($url){// 给与IP 段$data = array(119.120.'.'.rand(1,255).'.'.rand(1,255),124.174.'.'.rand(1,255).'.'.rand(1,255),116.249.'.'.rand(1,255).'.'.rand(1,255),118.125.'.'.rand(1,255).'.'.rand(1,255),42.175.'.'.rand(1,255).'.'.rand(1,255),124.162.'.'.rand(1,255).'.'.rand(1,255),211.167.'.'.rand(1,255).'.'.rand(1,255),58.206.'.'.rand(1,255).'.'.rand(1,255),117.24.'.'.rand(1,255).'.'.rand(1,255),203.93.'.'.rand(1,255).'.'.rand(1,255),);//随机获取一个IP地址$ip = $data[array_rand($data)];//模拟来源网址$referUrl = "http://www.baidu.com";$agentArray=[//PC端的UserAgent"safari 5.1 – MAC"=>"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","safari 5.1 – Windows"=>"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50","Firefox 38esr"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0","IE 11"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko","IE 9.0"=>"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0","IE 8.0"=>"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)","IE 7.0"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)","IE 6.0"=>"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)","Firefox 4.0.1 – MAC"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1","Firefox 4.0.1 – Windows"=>"Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1","Opera 11.11 – MAC"=>"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11","Opera 11.11 – Windows"=>"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11","Chrome 17.0 – MAC"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11","傲游(Maxthon)"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)","腾讯TT"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)","世界之窗(The World) 2.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)","世界之窗(The World) 3.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)","360浏览器"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)","搜狗浏览器 1.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)","Avant"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)","Green Browser"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",];$userAgent=$agentArray[array_rand($agentArray,1)];  //随机浏览器userAgent$header = array('CLIENT-IP:'.$ip,'X-FORWARDED-FOR:'.$ip,);    //构造ip$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url); //要抓取的网址curl_setopt($curl, CURLOPT_HTTPHEADER, $header);curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);curl_setopt($curl, CURLOPT_REFERER, $referUrl);  //模拟来源网址curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); //模拟常用浏览器的userAgentcurl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查$info = curl_exec($curl);return $info;
}/*** 伪装IP 地址 - 抓取数据* POST 请求* @param $url* @param array $data* @return mixed*/
function getPostIpData($url,$data=array()){// 给与IP 段$ipData = array(119.120.'.'.rand(1,255).'.'.rand(1,255),124.174.'.'.rand(1,255).'.'.rand(1,255),116.249.'.'.rand(1,255).'.'.rand(1,255),118.125.'.'.rand(1,255).'.'.rand(1,255),42.175.'.'.rand(1,255).'.'.rand(1,255),124.162.'.'.rand(1,255).'.'.rand(1,255),211.167.'.'.rand(1,255).'.'.rand(1,255),58.206.'.'.rand(1,255).'.'.rand(1,255),117.24.'.'.rand(1,255).'.'.rand(1,255),203.93.'.'.rand(1,255).'.'.rand(1,255),);//随机获取一个IP地址$ip = $ipData[array_rand($ipData)];//模拟来源网址$referUrl = "http://www.baidu.com";$agentArray=[//PC端的UserAgent"safari 5.1 – MAC"=>"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","safari 5.1 – Windows"=>"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50","Firefox 38esr"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0","IE 11"=>"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko","IE 9.0"=>"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0","IE 8.0"=>"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)","IE 7.0"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)","IE 6.0"=>"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)","Firefox 4.0.1 – MAC"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1","Firefox 4.0.1 – Windows"=>"Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1","Opera 11.11 – MAC"=>"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11","Opera 11.11 – Windows"=>"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11","Chrome 17.0 – MAC"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11","傲游(Maxthon)"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)","腾讯TT"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)","世界之窗(The World) 2.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)","世界之窗(The World) 3.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)","360浏览器"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)","搜狗浏览器 1.x"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)","Avant"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)","Green Browser"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",];$userAgent=$agentArray[array_rand($agentArray,1)];  //随机浏览器userAgent$header = array('CLIENT-IP:'.$ip,'X-FORWARDED-FOR:'.$ip,);    //构造ip$curl = curl_init(); // 启动一个CURL会话curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址curl_setopt($curl, CURLOPT_HTTPHEADER, $header);curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);curl_setopt($curl, CURLOPT_REFERER, $referUrl);  //模拟来源网址curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 0-跳过证书 1-从证书中检查SSL加密算法是否存在curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); // 模拟用户使用的浏览器curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referercurl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环$info = curl_exec($curl); // 执行操作if (curl_errno($curl)) {echo 'Errno'.curl_error($curl);//捕抓异常}curl_close($curl); // 关闭CURL会话return $info; // 返回数据,json格式
}/*** 时间戳转日期 - 精确到毫秒的时间戳* @param $time* @return false|string*/
function timeDate($time)
{$tag='Y-m-d H:i:s';$a = substr($time,0,10);$date = date($tag,$a);return $date;
}/*** 数字字符串求和* @param $numberString* @return float|int*/
function strSum ($numberString) {$arr = explode(',',$numberString);return array_sum($arr);
}/*** 随机数:1-10* @param $num* @return array*/
function randStr($num)
{$numbers = range (1,10);//shuffle 将数组顺序随即打乱shuffle ($numbers);//array_slice 取该数组中的某一段$result = array_slice($numbers,0,$num);//将数组的值按升序排列array_multisort($result,SORT_ASC,SORT_NUMERIC);return $result;
}/*** 单双判断 - 1 单 2 双* @param $num* @return bool|int*/
function isDouble($num){$is_double = 0;if(is_numeric($num)){if(is_int($num)){if($num % 2 == 0){$is_double = 2;}else{$is_double = 1;}}}else{return false;}return $is_double;
}GET请求,我们要在控制器中,调用此方法,控制器代码如下:
<?phpnamespace app\index\controller\choose;use think\Controller;
use think\Db;class ChooseGd extends Controller
{public function collection(){$url = '你要采集的网址';// 将数据格式 转换成你想要的数据类型$data = json_decode(pretendData($url),true);dump($data);die;}
}

最后,看看打印结果:

POST请求,我们要在控制器中,调用此方法,控制器代码如下:

这个是我们要抓取的的POST请求,接下来调用上面封装的POST请求方法:控制器代码如下:

<?phpnamespace app\index\controller\quick;use think\Controller;
use think\Db;class QuickXx extends Controller
{public function collection(){//模拟要抓取网址的参数$postData['lotterytype'] = 'GP_K3_JiLin';//要抓取的网址$url = '你要抓取的网址';$data = json_decode(getPostIpData($url,$postData),true);dump($data);die;}
}

结果打印如下:(顺便打印一下header头)

希望能帮到你!


http://chatgpt.dhexx.cn/article/cwZRuU7f.shtml

相关文章

android伪装mac地址,安卓手机如何伪装ip或者mac地址

满意答案 kgcvzz 2015.12.14 采纳率&#xff1a;45% 等级&#xff1a;9 已帮助&#xff1a;515人 android 是Linux内核,linux中mac地址是保存在/etc/init.d/networ 文件中的 但是在android中mac地址是直接写在硬件中的,需要通过API 才能获取 1、Android 获取本机Mac 地址方法…

ip地址伪装php,技术教程:如何使用浏览器插件伪装IP地址

步骤&#xff1a; 1、安装插件Modify Headers 进入 2、在浏览器右上角点小图标&#xff0c;选择打开“Open ModifyHeaders”&#xff0c;如下图所示。 3、如图依次选择 Add → 输入 X-Forwarded-For → 自定义IP地址 → 点Add按钮完成添加。 举一反三&#xff1a;可添加其他HTT…

08_基于IP的伪装

文章目录 爬虫的伪装动态IP接入指南IP代理中间件编写Setting中配置Middleware 博文配套视频课程&#xff1a;24小时实现从零到AI人工智能 爬虫的伪装 如果不进行伪装则我们每次采用相同IP抓取数据时可以会被目前服务器的防火墙之别&#xff0c;伪装有两种&#xff1a;配置代理I…

如何通过反向代理实现伪装IP?

首先说明什么是反向代理&#xff1f; 一句话解释&#xff0c;就是隐瞒真实IP让代理服务器IP暴露&#xff0c;客户在访问资源的时候&#xff0c;以为是从这个暴露IP获得的资源。 不好理解的话&#xff0c;先想想正向代理的实例——虚拟专用网络&#xff1a; 反向代理&#xff…

vscode+web_网页预览插件live preview/live server preview/live server

文章目录 live preview启动内部预览窗口vscode内启动浏览器dev tool窗口 pity live server preview启动 live server启动 live preview download 插件不错,支持实时预览,还支持调试工具 启动 内部预览窗口 或者用command palette: command palette: vscode内启动浏览器dev t…

【vue】 接口返回的preview是张图片,前端如何渲染

文章目录 问题解决第一种第二种 效果 接口返回的preview是张图片&#xff0c;前端如何渲染 问题 可以看到这里接口返回的preview是一张图片&#xff0c;response里什么也没有 前端&#xff08;vue2&#xff09;如何将图片渲染到页面上呢&#xff1f; 解决 第一种 也是最简单…

WinDbg Preview简单使用

WinDbg Preview简单使用 CLR程序调试入门dump包的抓取WindowsLinux 基本dump包分析SOS 调试扩展获取对应的clr.dll以及sos.dll加载基于sos的符号加载sos异常及处理方法 CLR程序调试入门 程序不光要能跑&#xff0c;还要能一直稳定的跑。前段时间线上接口时不时就会整体Down一下…

android studio preview 不显示

我们在使用android studio开发的时候&#xff0c;可以直接预览页面&#xff0c;右上角 preview 非常方便。 但是有时候我们会碰到一些问题 1.点开不显示预览画面 解决&#xff1a;默认第一次是不显示的&#xff0c;需要成功编译一次后可显示。如果编译后不显示 &#xff0c;…

VS Code Python预览插件Python preview的使用

VS Code Python预览插件的名称为Python preview&#xff0c;作者为dongli&#xff0c;当前版本0.0.4。该插件可提供简单的调试工具和代码预览。 安装与使用 安装 在插件搜索框输入Python preview安装。 简易使用 插件安装成功后&#xff0c;编辑器右上角将添加一个预览按钮…

Android Camera APP preview buffer 总体流程

文章目录 前言Camera preview 总体概括Establish snapdragon surfaceview surfaceCamera Device Create Preview Session Camera preview 详细流程Camera Buffer FlowCamera Service dequeue bufferGraphic buffer is transmit by binder to surfaceflinger process Display mo…

微软 Visual Studio 2022 Preview 3 发布

本文转载自IT之家 IT之家 8 月 13 日消息 时隔近一个月&#xff0c;微软终于发布了 Visual Studio 2022 Preview 3 版本&#xff0c;本次更新带来了关于个人和团队生产力、现代开发和不断创新为主题的新功能。 个人和团队生产力 在 Visual Studio 2022 Preview 3 中&#xff…

VMware Workstation创建Windows 10 Insider Preview (Release Preview Channel) - Build 19045.1826虚拟机

大家好&#xff0c;还记得我们上次干了什么&#xff1f;没错&#xff0c;我们创建了一个Windows 11 Insider Preview (Dev Channel) - Build 25179的虚拟机&#xff0c;那我们这次就来创建一个Windows 10 Insider Preview (Release Preview Channel) - Build 19045.1826的虚拟机…

VS code Markdown Preview Enhanced 预览白色改为黑色

VS code Markdown Preview Enhanced 预览白色改为黑色 1. 预览默认为白色2. 预览改为黑色参考 1. 预览默认为白色 2. 预览改为黑色 参考 Markdown Preview Enhanced doc

配置LiveServer时没有use browser preview设置栏目

在配置VScode显示html文件时&#xff0c;出现了use browser preview设置栏不存在&#xff1a; 在最新的VScode中&#xff1a; 由于此扩展已经弃用&#xff0c;所以在配置Live Server时只有20个设置项 解决方法&#xff1a; 打开Live Server扩展&#xff1a; 点击卸载下的下拉选…

Android 简单使用studio preview(预览)

简单使用studio preview&#xff08;预览&#xff09; 创建对应分辨率的设备 1.打开AVD Manager&#xff0c;开始创建所要适配的设备 2.添加硬件配置 3.添加屏幕尺寸和分辨率,其他默认即可。 4.创建完成以后&#xff0c;选择这个的硬件配置 5.接着选择一个System Image 6.…

windows11补充——Insider Preview 10.0.22623.1028 (ni_release)

大家好&#xff0c;我是涵子。大家应该知道了上次的windows11了吧&#xff01;这一次&#xff0c;我的电脑升级成了——Windows 11 Insider Preview 10.0.22623.1028 (ni_release)&#xff01;这个版本中的一些内容是关于windows12的&#xff01; 注意&#xff1a;本次文章较短…

Visual Studio Code实时预览插件live preview的安装和使用

初学前端时&#xff0c;要是频繁的预览写好的页面&#xff0c;未免会显得繁琐而且拉低学习效率。 这里推荐使用liver preview这个VScode插件&#xff0c;实现在VScode内部实现边写边预览的效果。 1.安装插件&#xff1a; 打开VScode》点击‘拓展’》搜索‘live preview’》点…

Preview和Response的结果不一样

背景 一般情况下我们看Network里面的Preview和Response的结果似乎一模一样。 不管是请求页面&#xff0c;请求页面还是请求js还是请求css&#xff0c;二者的结果都一样。 在Preview中&#xff0c;控制台会把发送过来的json数据自动转换成javascript的对象格式&#xff1b; …

Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布

具有里程碑意义的Visual Studio 2022 Preview 1正式发布&#xff0c;重点是64位&#xff0c;而没有增加新功能&#xff0c;并且同时也发布了.NET 6 Preview 5。 https://devblogs.microsoft.com/visualstudio/visual-studio-2022-preview-1-now-available/https://devblogs.mic…

关于Preview和Snapshot的Crop问题

preview的crop问题 这个问题其实有点乌龙&#xff0c;因为crop是在IPEnode进行处理的&#xff0c;我开始一直以为是IPE进行了裁剪才导致我最后的输出有问题&#xff0c;最后的原因竟然是因为chi node的输出的port导致我输出到IPE的buffer的size就已经小了。 我们有个问题&…