我试图解析aliexpress 产品卡,起初我以为我会通过 Simple HTML DOM 进行解析,但是当我切换到移动版本时,我看到所有响应都是通过 ajax 接收的:
但curl
我无法通过。
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
print_r(file_get_contents_curl('https://m.ru.aliexpress.com/ajaxapi/product/ajaxDetail.do?productId=32832914406'));
在这里,我认为是 cookie 或标头。即使是这样,从哪里获取它们以及如何正确发送它们?
对于未来:在 chrome 中,您可以右键单击请求 =>
Copy
=>Copy as cUlr
,整个 curl 命令将出现在缓冲区中。它仍然只是将其粘贴到控制台并观察结果。通过逐步清理不必要的标头的方法,我想出了一个最小的请求表单。实际上添加一个标题就足够了:
然后速卖通会给你你需要的一切。
这是要检查的命令:
不要忘记https。
正如上面已经说过的,完整的代码看起来像这样,它可以工作:
不要把它放在那里。
正如您正确指出的那样,它与 cookie 和标头有关,并且可能通过 POST 请求进行数据传输:
在 CURLOPT_HTTPHEADER 中,您传递所有标头(包括 cookie,因为从服务器的角度来看,后者只是标头),在 CURLOPT_USERAGENT 中,您传递用户代理的标头(最好是接收 cookie 的标头)。