1.0.0 |
|
---|---|
0.1.1 |
|
0.1.0 |
|
在 #截图 中排名第 5
38KB
714 行
website-screenshot
📸 网站截图服务
特性
- 💫 由 Rust 驱动
- 🚀 极快
- 👮 内置 ratelimiter
- 👜 内置 存储提供程序
- 🛡️ 内置 身份验证
- 🗼 可配置
部署
先决条件
- Rust nightly 1.62+ 或更高版本
- Redis 6 或更高版本
- Chrome 浏览器
- Chromedriver(必须与您的 Chrome 浏览器版本匹配)
环境变量
PORT
- 应用程序运行端口(可选,默认为3000
)REDIS_URL
- 您的 Redis 数据库地址(必需)FULLSCREEN_SCREENSHOT
- 如果设置,则将截图整个网站(可选)
Railway
更改提供商
要在 railway 中更改提供商
- 打开 railway 为您创建的仓库。
- 打开 Dockerfile
- 将第 39 行和第 44 行更改为
fleet build --release --no-default-features -<your_provider>
。 - 重新部署您的应用程序。
预构建的二进制文件
⚠️- 在使用预构建的二进制文件时,无法更改提供商。
Linux
curl -fsSL https://raw.githubusercontent.com/devtomio/website-screenshot/main/install.sh
其他
请参阅此仓库的 发布页面 并下载相应的二进制文件。
Docker
⚠️- 在使用 docker 镜像时,无法更改提供商。
此应用程序的 docker 化版本可在 此处 获取。
Cargo
将 website-screenshot
作为 crate 安装。
cargo install website-screenshot
从源代码构建
- 克隆此仓库。例如:
git clone https://github.com/devtomio/website-screenshot
- 构建二进制文件:
cargo build --release
身份验证
如果设置了 AUTH_TOKEN
变量,则将启用身份验证。
它将检查用户发送的 Authorization
标头是否与您设置的 AUTH_TOKEN
相等。
存储提供商
Fs (文件系统) 提供商
📝 - 这是默认提供商。
构建命令
cargo build --release
Cloudinary 提供商
📝 - 您必须创建一个未签名的上传预设。
环境变量
CLOUDINARY_API_KEY
- 您的 API 密钥(必需)CLOUDINARY_UPLOAD_PRESET
- 您未签名的上传预设名称(必需)CLOUDINARY_CLOUD_NAME
- 注册期间设置的云名称(必需)
构建命令
cargo build --release --no-default-features --features cloudinary_provider
Amazon AWS S3 提供商
⚠️ - 这尚未测试。如果遇到错误,请毫不犹豫地提交问题。
环境变量
S3_BUCKET_NAME
- 您的 S3 桶名称(必需)S3_REGION
- 您的 S3 桶区域(必需,如果使用 自托管 S3 则为可选)S3_ACCESS_KEY
- 您的访问密钥(必需)S3_SECRET_KEY
- 您的秘密密钥(必需)S3_SECURITY_TOKEN
- 您的安全令牌(可选)S3_SESSION_TOKEN
- 您的会话令牌(可选)
自托管 S3 存储
要使用自托管 S3 存储,请将 S3_ENDPOINT_URL
环境变量设置为端点 URL。
构建命令
cargo build --release --no-default-features --features s3_provider
Tixte 提供商
环境变量
TIXTE_UPLOAD_KEY
- 您的上传密钥,可在集成标签页找到(必需)TIXTE_DOMAIN_CONFIG
- 是否使用随机域名或特定域名(必需,只能为standard
或random
)TIXTE_CUSTOM_DOMAIN
- 要使用的特定域名(仅在TIXTE_DOMAIN_CONFIG
设置为standard
时必需)
构建命令
cargo build --release --no-default-features --features tixte_provider
Sled 提供商
环境变量
SLED_PATH
- 打开 sled 数据库时要提供的路径(可选,默认为.website-screenshot
)
构建命令
cargo build --release --no-default-features --features sled_provider
端点
GET /
你好,世界!
示例响应
Hello, world!
POST /screenshot
创建截图。
包含 url
键的 JSON 负载。
示例负载
{
"url": "https://rust-lang.net.cn"
}
示例响应
{
"slug": "abcdefghijk",
"path": "/s/abcdefghijk",
"metadata": {
"url": "https://rust-lang.net.cn"
}
}
GET /s/:slug
获取与 slug 对应的截图。
示例 URL
https://127.0.0.1:3000/s/abcdefghijk
示例响应
许可证
根据以下任一许可证授权
- Apache 许可证 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0》)
- 麻省理工学院许可证(《LICENSE-MIT 或http://opensource.org/licenses/MIT》)
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在本作品中的任何贡献,都将按照上述方式双许可,没有任何附加条款或条件。
贡献者 ✨
感谢这些出色的人们(《emoji key》)
Tomio 💻 📖 🚇 🚧 |
本项目遵循all-contributors规范。欢迎各种形式的贡献!
依赖项
~35–50MB
~1M SLoC