【问题标题】:url_encode with WGET in PHP?PHP中带有WGET的url_encode?
【发布时间】:2016-07-14 01:33:15
【问题描述】:

这个问题是在我之前提出的另一个主题之后,没有人能够提供帮助:

Retrieving M3U8 via PHP vs. via Website gives different session variables

所以现在我正在尝试通过 PHP WGET 相同的网站,但我相信我需要对 url 进行编码。当我尝试以下命令时,没有下载任何内容:

<?php
    exec("wget --header='Host: www.glturk.com' http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
?>

我得到一个下载的空文件:'ajax.aspx-stream=live',这表明可能没有正确读取 url?

如何编码该链接?我也试过:

<?php
    $encoded = urlencode("http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
    exec("wget --header='Host: www.glturk.com' $encoded");
?>

有什么想法吗?我一直在下载空文件?感谢您的帮助!

【问题讨论】:

  • 我觉得他们可能不希望你抓取他们的内容

标签: php ajax web wget m3u8


【解决方案1】:

?&amp; 这两个字符对 shell 有特殊含义,所以需要引用 URL。

exec("wget --header='Host: www.glturk.com' 'http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR'");

转义 shell 参数的正确函数是 escapeshellarg,而不是 urlencode。所以你也可以这样做:

$encoded = escapeshellarg("http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
exec("wget --header='Host: www.glturk.com' $encoded");

【讨论】:

  • 谢谢伙计,这行得通,但输出 m3u8 再次无效 - 这是我之前的问题在我最初的帖子中的问题。我不知道为什么会这样……我可以让 m3u8 正常运行,但它不会运行……如果我直接运行 glturk.com/… 链接,生成的 m3u8 可以完美运行……
  • 我刚刚在另一个问题中评论说,我无法使用返回的 URL 重现您的问题。
【解决方案2】:

卷曲

$url = "http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR";
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 
echo $output;

【讨论】:

  • 谢谢伙计,这行得通,但输出 m3u8 再次无效 - 这是我之前的问题在我最初的帖子中的问题。我不知道为什么会这样……我可以让 m3u8 正常运行,但它无法运行……如果我直接运行 [link]glturk.com/… 链接,生成的 m3u8 可以完美运行……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多