您好,如何使用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 ;
发布于 2018-06-09 03:37:57
(这不是一个完整的答案,但太长了,无法作为评论。我不想为你弄清楚所有的小细节)
这里有几个不同的问题,第一个是如何用php/curl做一个POST请求,你可以找到一个示例here。
另一个问题是如何在PHP中解析HTML,其中有几个选项列出了here。(我强烈推荐DOMDocument & DOMXPath组合)
另一个问题是,在PHP中如何克服验证码的挑战,1解决方案是使用deathbycaptcha API (顺便说一下,这是一个付费服务),你可以找到一个here的例子。
另一个问题是,他们使用了3个不同的类似CSRF的令牌,分别称为__VIEWSTATE
、__EVENTVALIDATION
和hdnCaptchaInstance
,所有这些令牌都必须被解析出来并与验证码一起提交。此外,您还需要处理cookie,因为CSRF令牌和验证码与您的cookie会话绑定(幸运的是,您可以让curl使用CURLOPT_COOKIEFILE自动处理cookie)。
https://stackoverflow.com/questions/50755508
复制相似问题