【问题标题】:Facebook Profile Picture scraper using Graph API v2.5 and access tokenFacebook Profile Picture scraper 使用 Graph API v2.5 和访问令牌
【发布时间】:2015-10-12 16:12:35
【问题描述】:

我正在构建 Facebook 个人资料图片抓取工具并使用 Phasher 类将抓取的图片转换为十六进制值并将其存储在数据库中以比较相似图片,现在我正在使用此 http 请求来获取图片并且它正在工作非常好,直到 Graph API v2.5 的最新更新

graph.facebook.com/'.$fid.'/picture?width=378&height=378

或者

graph.facebook.com/'.$fid.'/picture?type=large

您可以更改 '.$fid.'标记帐户的用户 ID 示例:

graph.facebook.com/4/picture?width=378&height=378

如您所见,它给了我马克·扎克伯格的帐户照片。

现在不工作了,我做了一个简单的搜索,我注意到他们在 v2.5 中更改了 API 以使用访问令牌,所以我创建了一个应用程序来给我应用程序 ID 和应用程序秘密,以便在 access_token= 中使用它

正如您在这一行中看到的: graph.facebook.com/[ID]/picture?width=378&height=378&access_token=

现在,当我使用访问令牌时,它不起作用,在给我头像文件夹中的刮擦图片和数据库中的哈希值之前,它现在给我 0 字节的图片,它是空白的。(奇怪的是,当我启动刮刀时,它被刮掉了 184 300张图片的249张头像)

我需要知道为什么会这样?

您可以在我的 Github 帐户上查看完整代码: github.com/jadolyo/FBpp

也欢迎任何建议,谢谢。

【问题讨论】:

  • 在任何情况下,您都不应该“抓取”随机用户的个人资料图片。您应该只访问正在使用您的应用的人的图片。
  • 我正在为所有 Facebook 个人资料图片制作反向图像搜索工具,以搜索相似的个人资料图片。请看我的 Github 账号:github.com/jadolyo/FBpp
  • 您应该阅读他们的服务条款和平台政策。第一个禁止在没有 Facebook 事先明确书面许可的情况下进行抓取——即使您为此使用应用程序,政策 3.11 仍然规定,“不要将 Facebook 数据放入搜索引擎或目录,或包含网络搜索Facebook 上的功能。”
  • 谢谢你的建议我很感激我写这篇文章只是为了好玩和提高我的编程技能,这实际上是一个挑战:)

标签: php facebook api facebook-graph-api scraper


【解决方案1】:

http://php.net/manual/en/migration56.openssl.php

描述在 PHP 5.6 中打开 ssl 所做更改的官方文档从这里我了解到我应该设置为 false 的另一个参数:“verify_peer_name”=>false

所以我的工作代码如下所示:

$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);

$img = file_get_contents('https://graph.facebook.com/'.$fid.'/picture?width=378&height=378', false, stream_context_create($arrContextOptions));

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2016-10-25
    • 2015-03-07
    相关资源
    最近更新 更多