Skip to content

Commit c347b35

Browse files
authored
Update README.md
1 parent aff379e commit c347b35

File tree

1 file changed

+21
-27
lines changed

1 file changed

+21
-27
lines changed

README.md

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -53,31 +53,36 @@ async fn main() -> Result<(), rquest::Error> {
5353

5454
## Performance
5555

56-
BoringSSL is a fork of OpenSSL designed for security and efficiency, used by Google Chrome, Android, and Cloudflare. We haven't encountered serious issues with BoringSSL related to the Golang utls [issue](https://github.com/refraction-networking/utls/issues/274).
56+
BoringSSL is a security- and efficiency-focused fork of OpenSSL, used by Google Chrome, Android, and Cloudflare. Unlike Golang utls, we havent encountered major issues related to [this issue](https://github.com/refraction-networking/utls/issues/274). By default, HTTP2 tracing is disabled, cutting performance overhead by 15%. For more details, see [this issue](https://github.com/hyperium/h2/issues/713).
5757

58-
By default, HTTP2 tracing is turned off, reducing performance overhead by 15%. For more information, see [issue](https://github.com/hyperium/h2/issues/713).
58+
## FFI Bindings
5959

60-
## Connection Pool
60+
- [rnet](https://github.com/0x676e67/rnet): Python HTTP client with a touch of black magic.
61+
- [ktor-impersonate](https://github.com/rushiiMachine/ktor-impersonate): KMP Ktor engine bindings for `rquest` to spoof JA3/JA4/H2 fingerprints.
6162

62-
The client can configure the maximum number of connection pools. Request manages connections based on `Host` and `Proxy`/`IP`/`Interface`, and can flexibly switch between them.
63+
## Requirements
6364

64-
- `Interface` refers to the network interface of the device, such as `wlan0` or `eth0`.
65+
Do not compile with packages that depend on openssl-sys; it links with the same prefix symbol as boring-sys, which can cause [link failures](https://github.com/cloudflare/boring/issues/197) and other problems. Even if compilation succeeds, using both `openssl-sys` and `boring-sys` as dependencies can cause memory segmentation faults.
6566

66-
## Root Certificate
67+
Install the dependencies required to build [BoringSSL](https://github.com/google/boringssl/blob/master/BUILDING.md#build-prerequisites)
6768

68-
By default, `rquest` uses Mozilla's root certificates through the `webpki-roots` crate. This static root certificate bundle is not automatically updated and ignores any root certificates installed on the host. You can disable `default-features` to use the system's default certificate path. Additionally, `rquest` provides a certificate store for users to customize and update certificates.
69+
```shell
70+
sudo apt-get install build-essential cmake perl pkg-config libclang-dev musl-tools -y
6971

70-
## Fingerprint
72+
cargo build --release
73+
```
74+
75+
This GitHub Actions [workflow](https://github.com/0x676e67/rquest/blob/main/.github/compilation-guide/build.yml) can be used to compile the project on **Linux**, **Windows**, and **macOS**.
7176

72-
- **JA3/JA4/Akamai Fingerprint**
77+
## Fingerprint
7378

74-
Supports custom `TLS`/`HTTP2` fingerprint parameters. Customization is not recommended unless you are highly familiar with TLS and HTTP2, as it may cause unexpected issues.
79+
- **HTTP/2 over TLS**
7580

76-
`JA3`/`JA4`/`Akamai` fingerprints cannot accurately simulate browser fingerprints due to the sophistication of TLS encryption and the popularity of HTTP2. `rquest` does not plan to support parsing these fingerprint strings for simulation. Users are encouraged to customize the configuration according to their own needs.
81+
**JA3**/**JA4**/**Akamai** fingerprints cannot accurately simulate browser fingerprints due to the sophistication of TLS encryption and the popularity of HTTP/2. `rquest` does not plan to support parsing these fingerprint strings for simulation. Users are encouraged to customize the configuration according to their own needs.
7782

78-
Note: Many `Akamai` fingerprint strings are incomplete. For example, the [website](https://tls.peet.ws/api/all) lacks Priority and Stream ID in the Headers Frame, making it easy to detect. For details, refer to the HTTP2 frame [parser](https://github.com/0x676e67/pingly/blob/main/src/track/inspector/http2.rs).
83+
Note: Many `Akamai` fingerprint strings are incomplete. For example, the [website](https://tls.peet.ws/api/all) lacks Priority and Stream ID in the Headers Frame, making it easy to detect. For details, refer to the HTTP/2 frame [parser](https://github.com/0x676e67/pingly/blob/main/src/track/inspector/http2.rs).
7984

80-
- **Device Fingerprint**
85+
- **Browser Device**
8186

8287
In fact, most device models have the same `TLS`/`HTTP2` configuration, except that the `User-Agent` is changed.
8388

@@ -107,20 +112,6 @@ By default, `rquest` uses Mozilla's root certificates through the `webpki-roots`
107112

108113
</details>
109114

110-
## Building
111-
112-
Do not compile with packages that depend on openssl-sys; it links with the same prefix symbol as boring-sys, which can cause [link failures](https://github.com/cloudflare/boring/issues/197) and other problems. Even if compilation succeeds, using both `openssl-sys` and `boring-sys` as dependencies can cause memory segmentation faults.
113-
114-
Install the dependencies required to build [BoringSSL](https://github.com/google/boringssl/blob/master/BUILDING.md#build-prerequisites)
115-
116-
```shell
117-
sudo apt-get install build-essential cmake perl pkg-config libclang-dev musl-tools -y
118-
119-
cargo build --release
120-
```
121-
122-
This GitHub Actions [workflow](https://github.com/0x676e67/rquest/blob/main/.github/compilation-guide/build.yml) can be used to compile the project on **Linux**, **Windows**, and **macOS**.
123-
124115
## Contribution
125116

126117
If you would like to submit your contribution, please open a [Pull Request](https://github.com/0x676e67/rquest/pulls).
@@ -129,6 +120,9 @@ If you would like to submit your contribution, please open a [Pull Request](http
129120

130121
Licensed under either of Apache-2.0 [License](LICENSE)
131122

123+
## Sponsors
124+
Support this project by becoming a [sponsor](https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md).
125+
132126
## Accolades
133127

134128
The project is based on a fork of [reqwest](https://github.com/seanmonstar/reqwest).

0 commit comments

Comments
 (0)