Facebook 如何使用SSL嵌入Instagram视频或图片?
我需要使用SSL协议嵌入Instagram视频或照片,以便在facebook应用程序中显示 如果我插入一个带有以下URL的iframe,它将加载http中的所有资源,但不会加载httpsFacebook 如何使用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
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