Facebook 如何使用SSL嵌入Instagram视频或图片?

Facebook 如何使用SSL嵌入Instagram视频或图片?,facebook,iframe,https,embed,instagram,Facebook,Iframe,Https,Embed,Instagram,我需要使用SSL协议嵌入Instagram视频或照片,以便在facebook应用程序中显示 如果我插入一个带有以下URL的iframe,它将加载http中的所有资源,但不会加载https UPDATE: This is the HTTPS Response, it's a 302 response. Connection: keep-alive Content-Length: 154 Content-Type: text/html Date: Tue, 10 Dec 2013 15:58:20

我需要使用SSL协议嵌入Instagram视频或照片,以便在facebook应用程序中显示

如果我插入一个带有以下URL的iframe,它将加载http中的所有资源,但不会加载https

UPDATE:
This is the HTTPS Response, it's a 302 response.

Connection: keep-alive
Content-Length: 154
Content-Type: text/html
Date: Tue, 10 Dec 2013 15:58:20 GMT
Location: http://instagram.com/p/hvisAyBQZ0/embed/
Server: nginx

为此,您需要实现Instagram的

您会注意到,它们的所有端点都可以通过https访问,尤其是


…将检索特定的照片或视频。

不幸的是,Instagram不支持HTTPS进行传统的
嵌入。他们所做的只是在您发现自己时重定向到http

或者,您可以将图片本身嵌入

所有这些URL实际上都是重定向的,但是目标URL似乎支持HTTPS,尽管在本文中没有提到

这当然不是一个令人满意的常规嵌入替代品,因为Instagram视频不能像这样提供(只有预览图像)。但是对于某些人来说,这可能比什么都没有好。

根据Mike Krieger的说法,你可以通过API获取URL,然后用
Discrewery.s3.amazonaws.com
替换URL的开头

例如:
http://images.ak.instagram.com/profiles/profile_539562_75sq_1386973442.jpg
可以变成
//distrillery.s3.amazonaws.com/profiles/profile\u 539562\u 75sq\u 1386973442.jpg
,在https上运行良好

Instagram现在似乎使用了各种CDN,所以你必须在重写规则方面更聪明一点。这是我的密码

<img src="//instagram.com/p/hvisAyBQZ0/media/?size=t" alt="Thumbnail (150x150)">
<img src="//instagram.com/p/hvisAyBQZ0/media/?size=m" alt="Medium (305x306)">
<img src="//instagram.com/p/hvisAyBQZ0/media/?size=l" alt="Large (640x640)">

请注意,当/如果Instagram更改其CDN设置时,这可能会中断。但目前这是一个可行的破解方法。

EFF在其HTTPS Everywhere Atlas中拥有Instagram cdn重写规则的丰富资源:


使用这些,您可以创建一个更健壮的系统来生成instagram https图像链接。

但我需要本机嵌入框架。但是,当我检索特定的照片或视频时,它仅在http中可用。更改https时出现证书验证错误。右-本机嵌入帧仅在HTTP上可用。如果你想要HTTPS,唯一的选择是使用开发者API。如果我使用API,我有单个图像的HTTP URL。把它改成HTTPS,我有SSL错误。啊,我明白你的意思了。没有办法通过SSL实际加载映像本身-它们不会通过SSL为其提供服务器。不过,实体的主体将被加密,以确保除实际二进制数据外的所有数据都被加密。也就是说:所有这些都是在公共领域,不管怎样,https真的有那么大的一笔交易吗?如果你想在facebook应用程序中嵌入instagram图片的话。因为instagram是Facebook。我不敢相信instagram不支持SSL,他们在哪个星球上?来吧,Instagram,请给我们SSL支持。遗憾的是,这不是一个完整的解决方案,因为Instagram一直支持视频。从我的测试来看,Instagram似乎越来越多地使用Facebook CDN(fbcdn.net URL),这是一个好消息,因为可以通过将
http://
替换为
/
def sslify_instagram_cdn_url(url):
    """Intercept IG CDN urls and serve using a SSL-friendly CDN instead"""
    replace_prefixes = (
        ('^http://images.ak.instagram.com(.*)$', '//distillery.s3.amazonaws.com%s'),
        ('^http://distilleryimage([0-9]*).ak.instagram.com(.*)$', '//distilleryimage%s.s3.amazonaws.com%s'),
        ('^http://origincache-([a-z]*).fbcdn.net(.*)$', '//origincache-%s.fbcdn.net%s'),
        ('^http://distilleryimage([0-9]*).s3.amazonaws.com(.*)$', '//distilleryimage%s.s3.amazonaws.com%s'),
        ('^http://scontent-([a-z]).cdninstagram.com(.*)$', '//scontent-%s.cdninstagram.com%s'),
        ('^http://photos-[a-z].ak.instagram.com/hphotos-ak-[0-9a-z]{3,4}/(.*)$', '//origincache-frc.fbcdn.net/%s'),
    )
    for prefix, replacement in replace_prefixes:
        results = re.findall(prefix, url)
        if not results:
            continue
        return replacement % results[0]
    return url