php - 如何使用 curl 从其他网站搜索数据
问题描述
嗨,我如何使用 curl 和 php 从其他网站搜索数据。我想从这个网站https://www.example.com/xxx搜索imei号码
这是我迄今为止尝试过的
$imei = '013887009861498';
$cookie_file_path = "cookies/cookiejar.txt";
$fp = fopen("$cookie_file_path","w") or die("<BR><B>Unable to open cookie file $mycookiefile for write!<BR>");
fclose($fp);
$url="https://example.com/xxx";
$agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$imei);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result = curl_exec ($ch);
echo $result ;
解决方案
(这不是一个完整的答案,但太长了不能发表评论。我不能为你弄清楚所有的小细节)
这里有几个不同的问题,第一个是如何使用 php/curl 进行 POST 请求,您可以在此处找到示例。
另一个问题是如何在 PHP 中解析 HTML,这里列出了几个选项。(我强烈推荐 DOMDocument 和 DOMXPath 组合)
另一个问题是如何克服 PHP 中的 CAPTCHA 挑战,一种解决方案是使用 deadbycaptcha API(顺便说一句,这是一项付费服务),您可以在此处找到一个示例。
另一个问题是他们使用了 3 个不同的类似 CSRF 的令牌,称为__VIEWSTATE
、__EVENTVALIDATION
和hdnCaptchaInstance
,所有这些令牌都必须解析出来并与验证码答案一起提交。您还需要处理 cookie,因为 CSRF 令牌和验证码与您的 cookie 会话相关联(幸运的是,您可以让 curl 使用 CURLOPT_COOKIEFILE 自动处理 cookie)
推荐阅读
- vim - 如何在不删除 Vim 中的括号的情况下删除括号内的所有内容?
- node.js - 如何使用 google oAuth 库在本地验证 Google 访问令牌
- ios - 在 React Native 中使用 Apple 登录返回 null
- python - 将 2 个一维数组转换为 1 个二维数组 Numpy Python
- python - ModuleNotFoundError:没有名为“deepface”的模块
- c# - 编辑时小数列的 RadGridView 千位分隔符
- ocaml - 如何计算字符列表中重复出现的字符重复次数?
- docker - 为什么在 docker 引擎中已经创建了一些卷?
- android - 具有通用类型的 Moshi jason 适配器
- javascript - React:Slider onChangeEnd 之后的无限函数调用循环