【问题标题】:PHP cURL returns encrypted html pagePHP cURL 返回加密的 html 页面
【发布时间】:2020-08-16 07:40:24
【问题描述】:

我正在尝试从 PHP 上的 cURL GET-request 获取简单的 html 代码。
url 上的默认获取请求,例如 http://example.com/(不完全是此域),返回我需要的 html 代码,但在此域的页面上获取请求,例如 http://example.com/something 返回 gzip 加密数据或其他内容。
我已经尝试解决此问题:

curl_setopt(ch, CURLOPT_ENCODING, ''); // returns ''
curl_setopt(ch, CURLOPT_ENCODING, 'gzip'); // returns ''
curl_setopt(ch, CURLOPT_ENCODING, 'gzip,compressed'); // returns ''
$html = gzdecode($data); // data error

顺便说一句,在检查器上,如 Fiddler,此页面返回类似的奇怪符号,但只需单击即可修复:“单击解密”。如何使用 PHP 以编程方式解密我的数据?

【问题讨论】:

  • 如何在我的 php cURL 库中使用“--compressed”标志?
  • 终端 运行 $ curl -o response.txt -D header.txt http://example.com/something - (这将获取页面并将响应的标题保存到 header.txt) - 然后更新您的问题,添加响应的标题。了解响应是如何压缩/编码的可能很有用
  • 我不知道 Fiddler 中有任何 click to decrypt 按钮 - 不过,有一个 Click to decode 按钮,你的意思是 Click to decode 吗?

标签: php url curl request php-curl


【解决方案1】:

如果我理解你的话,你需要从一个 url 获取 HTML 中的内容。

请检查此链接: Get HTML from URL using curl in PHP

你不需要在 curl_setopt 中使用 CURLOPT_ENCODING。

编辑

我试过了,效果很好:

<?php
function get_data($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$html_content = get_data('https://stackoverflow.com/questions/61548866/php-curl-returns-encrypted-html-page/61549219?noredirect=1#comment108875034_61549219');

echo "You are getting HTML code from an url <br>".$html_content;
?>

Image with test working in localhost

谢谢,希望对你有帮助。

【讨论】:

  • $html = htmlspecialchars($data); // 返回 ''
  • 在帖子中包含图片。所以我们可以看到它。
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2012-12-16
  • 2012-09-11
  • 2011-09-30
相关资源
最近更新 更多