首页 > 解决方案 > 如何使用 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 ;

标签: phpcurlphp-curl

解决方案


(这不是一个完整的答案,但太长了不能发表评论。我不能为你弄清楚所有的小细节)

这里有几个不同的问题,第一个是如何使用 php/curl 进行 POST 请求,您可以在此处找到示例。

另一个问题是如何在 PHP 中解析 HTML,这里列出了几个选项。(我强烈推荐 DOMDocument 和 DOMXPath 组合)

另一个问题是如何克服 PHP 中的 CAPTCHA 挑战,一种解决方案是使用 deadbycaptcha API(顺便说一句,这是一项付费服务​​),您可以在此处找到一个示例。

另一个问题是他们使用了 3 个不同的类似 CSRF 的令牌,称为__VIEWSTATE__EVENTVALIDATIONhdnCaptchaInstance,所有这些令牌都必须解析出来并与验证码答案一起提交。您还需要处理 cookie,因为 CSRF 令牌和验证码与您的 cookie 会话相关联(幸运的是,您可以让 curl 使用 CURLOPT_COOKIEFILE 自动处理 cookie)


推荐阅读