为什么要下载给我403的Facebook图片链接?

时间:2015-10-09 15:07:51

标签: php facebook http-status-code-403

我在Facebook上看到了一张图片。我想通过图像搜索系统运行它,类似于Tin Eye。手动完成这么多次后,我写了一个Chrome扩展程序。它失败了,远程页面不断变为403.所以我把它传递给我自己的网络服务器而不是我的扩展程序将URL传递给我自己的网络服务器,以确定我可以下载文件,然后将URL传递给我自己的服务器。

当我尝试时,我得到了403,但是想到投入浏览器用户代理会解决这个问题。不,还是403'。有谁知道如何从Facebook抓图像?我不知道下一步该尝试什么。

我试过的Facebook网址:https://scontent-iad3-1.xx.fbcdn.net/hphotos-xpa1/v/t1.0-9/12122627_10153631184244320_8240475011131575646_n.jpg?oh=905919fbb09f3c59af1c73f7c85eb455&oe=5688C900

传递给此代码:

<?php

  if (!empty($_REQUEST["url"])) {
    $options = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-language: en\r\n" .
                  "Cookie: foo=bar\r\n" .
                  "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n"
      )
    );

    $context = stream_context_create($options);
    $file = file_get_contents($_REQUEST["url"], false, $context);

  }

?>

我尝试在浏览器中打开网址,然后返回图片。我尝试删除https并将其作为http请求,同样的问题。现在不知道。

编辑:我只是觉得这些标题可能不够,所以我解雇了Wireshark并抓住了Chrome在请求图片网址时添加的标题并添加了它们,但它没有区别:(

    'header'=>"Accept-language: en-US,en;q=0.8\r\n" .
              "Host: scontent-iad3-1.xx.fbcdn.net\r\n" .
              "Connection: keep-alive\r\n" .
              "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n" .
              "Upgrade-Insecure-Requests: 1\r\n" .
              "Accept-Encoding: gzip, deflate, sdch\r\n" .
              "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36\r\n"

0 个答案:

没有答案