hashify.me 神奇的在线服务 将整个文档存储在 URL 中

简介: Hashify 是一个非常奇特的在线服务,它的目标不是解决一个问题,而是提出一个疑问:当我们把整个文档储存在 URL 中时会发生什么样的事情?

Hashify 是一个非常奇特的在线服务,它的目标不是解决一个问题,而是提出一个疑问:当我们把整个文档储存在 URL 中时会发生什么样的事情?

image.png

原理

整个文档被储存在 URL 之中。Hashify 将 Unicode 通过 Base64 编码转化转化为 ASCII 字符。

> unescape(encodeURIComponent('ça va?'))

"ça va?"

> btoa(unescape(encodeURIComponent('ça va?')))

"w6dhIHZhPw=="


URL 长度限制

出乎一般人的意料,HTTP 规范并没有见限制 URL 的长度!这意味着 Hashify 可以储存任意长度的文档!

那么,浏览器是否有限制呢?大可放心,主流浏览器支持 80k 字符的 URL。例如 Chrome 在 215k 字符的 URL 时才会失去响应。

不过,服务器和代理等等的限制可能要更紧一些。


并且,由于 URL 过长,复制传播很不方便,因此 Hashify 使用了 bit.ly 来缩短网址。然而,bit.ly 对 URL 长度有 2048 字符的限制。对于大多数文档而言,这也足够了。如果文档很长的话,Hashify 会把内容切分,(最多切分成 15 份),然后将每份进行 Base64 转码并分别发送给 bit.ly。然后将 bit.ly 返回的结果组合起来:

http://hashify.me/unpack:gYi2Ie,g4fpte.

因此,Hashify 可以为 22,500 字符以下的文档生成短网址。

也就是说,22,500 字符以下的文档都可以将 bit.ly 作为存储空间!这真是对短网址生成服务绝妙的滥用!


API

已知 Hashify 网址的前提下,无需访问 hashify.me 网站便可获取文档内容,例如,使用 Python:

from base64 import b64decode

from urlparse import urlparse

defunhashify(url):

   return b64decode(urlparse(url).path[1:])

unhashify('http://hashify.me/w6dhIHZhPw==')

部署

你可以直接在 http://hashify.me 上使用 Hashify 服务。当然,Hashify 是开源的,你也可以部署在自己的服务器上。

克隆仓库:

git clone https://github.com/hashify/hashify.me

安装 Compass:

gem update --system

gem install compass

安装依赖

make setup

构建

make

假设你使用 nginx 服务器,添加配置文件并激活,

ln -s "$(pwd)/nginx.conf"/opt/local/etc/nginx/sites-available/hashify.me

ln -s ../sites-available/hashify.me /opt/local/etc/nginx/sites-enabled/hashify.me

sudo nginx -s reload

项目主页

http://hashify.me

相关文章
|
2月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
5月前
|
编解码 Linux 开发工具
如何启动Windows平台轻量级RTSP服务生成RTSP拉流URL
为满足内网超低延迟需求,我们开发了轻量级RTSP服务模块,避免用户额外部署服务器。此模块集成于推送端SDK中,支持Windows、Linux、Android及iOS平台,可将本地音视频数据编码后通过RTSP协议提供。具备RTSP鉴权、单播/组播等功能,支持H.264/H.265编码,同时可创建多个服务实例,并查询连接数。实测总延迟约200-300毫秒,兼具稳定与高效。
105 1
|
7月前
|
文字识别 小程序 API
视觉智能开放平台产品使用合集之使用SDK进行视频活体检查时,如何将视频URL传递给后端服务
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
缓存 Java Spring
解决IDEA报错:无法检索应用程序 JMX 服务 URL[Failed to retrieve application JMX service URL]亲测可用
解决IDEA报错:无法检索应用程序 JMX 服务 URL[Failed to retrieve application JMX service URL]亲测可用
2434 1
|
8月前
|
JavaScript Java 测试技术
基于springboot+vue.js的交通管理在线服务系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的交通管理在线服务系统附带文章和源代码设计说明文档ppt
63 0
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的工单管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的工单管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
118 0
|
8月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的交通管理在线服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的交通管理在线服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
8月前
|
监控 数据库
第六十七章 使用 Web 服务监控 IRIS - 监控 Web 服务的 URL
第六十七章 使用 Web 服务监控 IRIS - 监控 Web 服务的 URL
58 0
|
8月前
|
JavaScript 小程序 Java
交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)
交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)
111 0
|
8月前
|
机器学习/深度学习 人工智能 API
人工智能平台PAI产品使用合集之机器学习PAI-EAS部署好后,服务的公网API和URL怎么配置
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。

热门文章

最新文章