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

时间:2013-12-10 15:25:25

标签: facebook iframe https embed instagram

我需要使用SSL协议嵌入Instagram视频或照片,因此我可以在Facebook应用中显示它。

如果我插入带有以下网址https://instagram.com/p/hvisAyBQZ0/embed/的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

4 个答案:

答案 0 :(得分:1)

不幸的是,Instagram不支持传统<iframe>嵌入的HTTPS。他们所做的只是在你发现自己的时候重定向到http。

或者,您可以使用<img>标记嵌入图片。这些图片可以通过HTTPS提供,并附有有效的SSL证书。

示例:

<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)">

所有这些网址实际上都是重定向,但目标网址似乎支持HTTPS,尽管official documentation中未提及。

这当然不是常规嵌入的令人满意的替代品,因为Instagram视频不能像这样(仅预览图像)。但也许对某些人来说,这比没有好。

答案 1 :(得分:0)

为此,您需要实现Instagram的Developer API

您会注意到所有终结点都可通过https获得,特别是......

https://api.instagram.com/v1/media/3?access_token=[redacted]

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

答案 2 :(得分:0)

根据Mike Krieger的this old Google Groups post,您可以通过API获取网址,然后使用distillery.s3.amazonaws.com替换网址的开头。

例如:http://images.ak.instagram.com/profiles/profile_539562_75sq_1386973442.jpg可以成为//distillery.s3.amazonaws.com/profiles/profile_539562_75sq_1386973442.jpg,可以在https上正常工作。

看来Instagram现在使用各种CDN,所以你必须对重写规则更聪明。这是我的代码

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

请注意,如果Instagram更改了CDN设置,这可能会中断。但它现在是一个可行的黑客。

答案 3 :(得分:0)

EFF在他们的HTTPS Everywhere Atlas中拥有Instagram cdn重写规则的优秀资源:https://www.eff.org/https-everywhere/atlas/domains/instagram.com.html

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