59个版本
0.11.91 | 2024年7月25日 |
---|---|
0.11.86 | 2024年6月29日 |
0.11.67 | 2024年3月21日 |
0.11.47 | 2023年12月29日 |
0.11.30 | 2023年11月11日 |
#5 in #websocket-client
787 每月下载量
在 2 crates 中使用
735KB
15K SLoC
reqwest-impersonate
一个直观且强大的Rust HTTP
/WebSocket
客户端,具有TLS/JA3/JA4/HTTP2指纹伪装功能
- 伪装Chrome / Safari / Edge / OkHttp
- 普通正文,JSON,urlencoded,multipart
- 可定制的重定向策略
- HTTP代理
- 通过BoringSSL的HTTPS
- WebSocket
- Cookie存储
- WASM
- 变更日志
示例
此异步示例使用Tokio并启用了一些可选功能,因此您的Cargo.toml
可能如下所示
[dependencies]
tokio = { version = "1", features = ["full"] }
reqwest_impersonate = "0.11"
或者WebSocket
[dependencies]
tokio = { version = "1", features = ["full"] }
reqwest_impersonate = { version = "0.11", features = ["websocket"] }
然后是代码
use std::error::Error;
use reqwest_impersonate as reqwest;
use reqwest::impersonate::Impersonate;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
// Build a client to mimic Chrome123
let client = reqwest::Client::builder()
.impersonate(Impersonate::Chrome123)
.enable_ech_grease()
.permute_extensions()
.cookie_store(true)
.build()?;
// Use the API you're already familiar with
let resp = client.get("https://tls.peet.ws/api/all").send().await?;
println!("{}", resp.text().await?);
Ok(())
}
然后是WebSocket代码
use reqwest_impersonate as reqwest;
use std::error::Error;
use tungstenite::Message;
use futures_util::{SinkExt, StreamExt, TryStreamExt};
use reqwest::{impersonate::Impersonate, Client};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let websocket = Client::builder()
.impersonate_websocket(Impersonate::Chrome120)
.build()?
.get("wss://echo.websocket.org")
.upgrade()
.send()
.await?
.into_websocket()
.await?;
let (mut tx, mut rx) = websocket.split();
tokio::spawn(async move {
for i in 1..11 {
tx.send(Message::Text(format!("Hello, World! #{i}")))
.await
.unwrap();
}
});
while let Some(message) = rx.try_next().await? {
match message {
Message::Text(text) => println!("received: {text}"),
_ => {}
}
}
Ok(())
}
要求
在Linux上
- OpenSSL和头文件。有关支持的版本和更多详细信息,请参阅https://docs.rs/openssl。或者您可以选择启用
native-tls-vendored
功能来编译OpenSSL的一个副本。
在Windows和macOS上
- 无。
Reqwest使用rust-native-tls,如果可用,将使用操作系统TLS框架,这意味着Windows和macOS。在Linux上,它将使用OpenSSL 1.1。
许可证
许可如下之一
- Apache License,版本2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT或http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在本作品中的任何贡献,将根据上述条款进行双重许可,而不附加任何其他条款或条件。
赞助商
Capsolver.com 是一款由人工智能驱动的服务,专注于自动解决各种类型的验证码。它支持包括 reCAPTCHA V2、reCAPTCHA V3、hCaptcha、FunCaptcha、DataDome、AWS Captcha、Geetest 以及 Cloudflare Captcha / Challenge 5s、Imperva / Incapsula 在内的多种验证码。对于开发者,Capsolver 提供了详细的 API 集成选项,可在其 文档 中找到,便于将验证码解决功能集成到应用程序中。他们还提供了 Chrome 和 Firefox 的浏览器扩展,使用户可以直接在浏览器中使用他们的服务。提供不同的定价套餐以满足不同的需求,确保用户灵活性。
依赖关系
~2–27MB
~550K SLoC