我正在尝试访问此(https://www.gearbest.com/cell-phones/pp_009969695587.html)页面,但没有运气。我没有回应...
<?php
$output = shell_exec('curl -L "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" https://www.gearbest.com/cell-phones/pp_009969695587.html');
echo $output;
$html= str_get_html($output);
echo $html;
?>
答案 0 :(得分:2)
您忘记检查stderr。您会在stderr中获得输出,但是我想您的stderr会被重定向到您没有看到的某个地方(例如,如果您使用的是php-fpm + nginx,那么默认情况下,stderr通常会被重定向到nginx的错误日志)
检查您的stderr,或通过在命令末尾添加2>&1
将stderr重定向到stdout。
为了记录,这是我希望您在stderr中得到的(这是我在运行它时在stderr中得到的):
curl: (6) Could not resolve host: Mozilla
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
..这不能解决我怀疑是您的实际问题,齿轮兽正在阻止卷曲,但这不是您真正的问题,所以我想我不会考虑这个问题。
答案 1 :(得分:0)
基于此答案https://stackoverflow.com/a/31597823/80836,以下方法似乎可行:
curl 'https://www.gearbest.com/cell-phones/pp_009969695587.html' -H 'authority: www.gearbest.com' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' -H 'sec-fetch-mode: navigate' -H 'sec-fetch-user: ?1' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3' -H 'sec-fetch-site: none' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9,el;q=0.8' --compressed