gpt4 book ai didi

facebook - 阻止 Facebook/其他应用程序通过私有(private)共享链接抓取我的 Web 应用程序

转载 作者:行者123 更新时间:2023-12-01 18:43:36 24 4
gpt4 key购买 nike

编辑:建议的答案不起作用,因为机器人不仅仅是从我的索引中随机抓取,它们还在访问 FB 消息中输入的特定链接。

我在 App Engine 上的 Flask 中创建了一个基本的聊天应用程序。它允许用户通过添加他们的 ID 或给他们一个私有(private)共享链接来邀请其他人,该链接会自动添加曾经访问过该链接的人(类似于 YouTube 或 Google Drive)。

我发现的一个严重缺陷是,如果用户将链接发布到 Facebook 消息中,Facebook 将抓取/访问该链接,并根据我的系统设计将他们作为用户添加到对话中。突然间,您会看到 3 个随机用户加入对话。

我的聊天系统是完全匿名的,并且被设计为临时的,因此除了每个用户在其 session 中保存的唯一 key 之外,没有登录或身份验证。

Facebook 机器人访问该链接,获得分配的 ID 并通过身份验证进入对话,因为它们使用了用户共享链接,有没有办法可以通过 Flask/Python 或 App Engine 阻止这种情况?我可以禁止 facebook 的 IP 吗?

为了代码而编写一些代码,为每个新访问者执行此操作:

def requires_session(f):
@wraps(f)
def decorated(*args, **kwargs):
if 'profile' not in session:
user_ref = fs_database.collection('users').document()

data = {
'id': user_ref.id,
'date': datetime.now(timezone.utc)
}
# add the user to the database
user_ref.set(data)

# save their id to their session
session['profile'] = data.get('id')

# create a hash for later on to create a sharelink
session['share'] = hashlib.sha256(data.get('id').encode('utf-8')).hexdigest()
return f(*args, **kwargs)
return decorated

我可以先添加一个检查if Facebook-bot: return False

最佳答案

对于您的情况,我想说您可以在您这边或在 Google Cloud Platform 这边避免这种情况。更准确地说,您可以拒绝代码中的某些连接,或者可以为 App Engine 实例设置防火墙规则以拒绝来自某些 IP 的连接。在公共(public)文档中,您可以找到有关使用 GAE 时防火墙规则的更多信息:

代码方面你可以查看这个github repo这解决了阻止 Flask 应用程序的某些 IP 的问题。

最后一个可能的选项是身份验证,但由于聊天是匿名的,我想这不是您正在寻找的解决方案。

关于facebook - 阻止 Facebook/其他应用程序通过私有(private)共享链接抓取我的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57510003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com