我想每天都得到我所有的facebook朋友,而我正在寻找哪种方式更有效。
我的第一个方法是创建一个selenium webdriver脚本。它打开一个Web浏览器,访问/me/friends
,自动向下滚动,直到列表完成,然后解析名称。它工作得很好,但需要一些时间(约4-5分钟)。
在对图表API进行一些搜索后,似乎无法获得完整列表。
另一种方法是从Facebook请求下载所有数据,但Facebook会向您发送电子邮件,您需要等待并下载等等,但您仍需要等待。
最后的方法是使用chrome扩展名(名称为who deleted me
),它的工作速度比我的方法快。我想知道这个扩展是如何工作的,我注意到的一件事是它没有找到我的一个已经去世的朋友。我不喜欢第三方扩展程序来获取我的数据,而我更喜欢自己做。所以我想知道是否有一个返回你的公众朋友的端点?或者这个chrome扩展的方法是什么?
有没有其他编程方式来取友?当然你可以使用无头浏览器并向/me/friends
做一些请求并获得响应,因为它在向下滚动时会显示网页浏览器,但很难理解哪些ajax调用是正确的。
更新 我的报废方法:https://gist.github.com/johndel/cd01a854e8bf36d9d30b44758607cf3d#file-check_friends-rb
这不是我能写的最好的代码,只是看到它完成的黑客攻击,只需用你的电子邮件/密码替换sendkeys就可以了。我的方法得到了我所有的朋友(chrome扩展方法没有找到我的朋友,这就是为什么我认为它正在击中另一个端点而且它的做法不同)。
答案 0 :(得分:1)
this
是一个图表API端点,只会获取授权您的应用的朋友列表。找不到授权你的应用的朋友是不可能的。在Facebook上不允许任何可能的东西,因为它涉及刮擦。
刮痧条款:https://www.facebook.com/apps/site_scraping_tos_terms.php
更多信息:Facebook Graph Api v2.0+ - /me/friends returns empty, or only friends who also use my app
答案 1 :(得分:0)
我找到了另一个我可以获取用户的网址,似乎有很多网站和多个解决方案。因此,无头和更快的方法是这个要点:
https://gist.github.com/johndel/29afec4b159203baf7521cd5a50dbb60我猜它可以通过线程进一步优化(可能是typhoeus
和hydra
)。