Skip to content

Commit 9be05d8

Browse files
Merge pull request #53 from SearchApi/fix-readme-branding-emulations
Update README with SearchApi branding, fix references, and sync emulations
2 parents d2d4a27 + af40260 commit 9be05d8

File tree

3 files changed

+53
-27
lines changed

3 files changed

+53
-27
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "wreq-ruby"
33
description = "Ruby bindings for Wreq, HTTP client library in Rust."
44
authors = ["SearchApi <support@searchapi.io>"]
5-
homepage = "https://github.com/SearchApi"
5+
homepage = "https://github.com/SearchApi/wreq-ruby"
66
repository = "https://github.com/SearchApi/wreq-ruby"
77
edition = "2024"
88
rust-version = "1.85"

README.md

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# wreq-ruby
22

3+
[![Gem Version](https://badge.fury.io/rb/wreq.svg)](https://rubygems.org/gems/wreq)
34
[![CI](https://github.com/SearchApi/wreq-ruby/actions/workflows/ci.yml/badge.svg)](https://github.com/SearchApi/wreq-ruby/actions/workflows/ci.yml)
45

5-
An easy and powerful Ruby HTTP client with advanced browser fingerprinting that accurately emulates **Chrome**, **Firefox**, **Safari**, **Opera**, and **OkHttp**, with precise **TLS/HTTP2** signatures, and powered by [wreq](https://github.com/0x676e67/wreq).
6-
6+
An easy and powerful Ruby HTTP client with advanced browser fingerprinting that accurately emulates **Chrome**, **Edge**, **Firefox**, **Safari**, **Opera**, and **OkHttp**, with precise **TLS/HTTP2** signatures, and powered by [wreq](https://github.com/0x676e67/wreq).
77

88
## Features
99

10-
- Plain bodies, JSON, urlencoded,
10+
- Plain bodies, JSON, urlencoded
1111
- Cookie Store
1212
- Redirect Policy
1313
- Original Headers
@@ -18,22 +18,30 @@
1818
- Free-Threaded Safety
1919
- Automatic Decompression
2020

21-
## Example
22-
23-
This example demonstrates how to make a simple GET request using the `wreq` library. So you need install `wreq` and run the following code:
21+
## Installation
2422

2523
```bash
2624
gem install wreq
2725
```
2826

29-
And then the code:
27+
Or add to your Gemfile:
28+
29+
```ruby
30+
gem "wreq"
31+
```
32+
33+
Pre-compiled native gems are available for:
34+
- Linux (x86_64, aarch64)
35+
- macOS (arm64)
36+
37+
## Example
3038

3139
```ruby
3240
require "wreq"
3341

34-
# Build a client
42+
# Build a client
3543
client = Wreq::Client.new(emulation: Wreq::Emulation.new(
36-
device: Wreq::EmulationDevice::Chrome142,
44+
device: Wreq::EmulationDevice::Chrome145,
3745
os: Wreq::EmulationOS::MacOS,
3846
skip_http2: false,
3947
skip_headers: false
@@ -50,11 +58,11 @@ Additional learning resources include:
5058
- [Repository Tests](https://github.com/SearchApi/wreq-ruby/tree/main/test)
5159
- [Repository Examples](https://github.com/SearchApi/wreq-ruby/tree/main/examples)
5260

53-
## Behavior
61+
## Browser Emulation
5462

5563
1. **HTTP/2 over TLS**
5664

57-
Due to the complexity of TLS encryption and the widespread adoption of HTTP/2, browser fingerprints such as **JA3**, **JA4**, and **Akamai** cannot be reliably emulated using simple fingerprint strings. Instead of parsing and emulating these string-based fingerprints, `rnet` provides fine-grained control over TLS and HTTP/2 extensions and settings for precise browser behavior emulation.
65+
Due to the complexity of TLS encryption and the widespread adoption of HTTP/2, browser fingerprints such as **JA3**, **JA4**, and **Akamai** cannot be reliably emulated using simple fingerprint strings. Instead of parsing and emulating these string-based fingerprints, `wreq` provides fine-grained control over TLS and HTTP/2 extensions and settings for precise browser behavior emulation.
5866

5967
2. **Device Emulation**
6068

@@ -72,17 +80,20 @@ Most browser device models share identical TLS and HTTP/2 configurations, differ
7280
| **iOS** | iOS (iPhone/iPad) |
7381

7482
</details>
83+
84+
<!-- Emulation profiles sourced from src/emulation.rs - keep in sync -->
85+
7586
- <details>
7687
<summary>Available browser emulations</summary>
7788

78-
| **Browser** | **Versions** |
79-
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80-
| **Chrome** | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome110`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome132`, `Chrome133`, `Chrome134`, `Chrome135`, `Chrome136`, `Chrome137`, `Chrome138`, `Chrome139`, `Chrome140`, `Chrome141`, `Chrome142`, `Chrome143` |
81-
| **Safari** | `SafariIos17_2`, `SafariIos17_4_1`, `SafariIos16_5`, `Safari15_3`, `Safari15_5`, `Safari15_6_1`, `Safari16`, `Safari16_5`, `Safari17_0`, `Safari17_2_1`, `Safari17_4_1`, `Safari17_5`, `Safari18`, `SafariIPad18`, `Safari18_2`, `SafariIos18_1_1`, `Safari18_3`, `Safari18_3_1`, `Safari18_5`, `Safari26`, `Safari26_1`, `Safari26_2`, `SafariIos26`, `SafariIos26_2`, `SafariIPad26`, `SafariIpad26_2` |
82-
| **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139`, `Firefox142`, `Firefox143`, `Firefox144`, `Firefox145`, `Firefox146` |
83-
| **OkHttp** | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp4_12`, `OkHttp5` |
84-
| **Edge** | `Edge101`, `Edge122`, `Edge127`, `Edge131`, `Edge134`, `Edge135`, `Edge136`, `Edge137`, `Edge138`, `Edge139`, `Edge140`, `Edge141`, `Edge142`|
85-
| **Opera** | `Opera116`, `Opera117`, `Opera118`, `Opera119` |
89+
| **Browser** | **Versions** |
90+
| ----------- | ------------ |
91+
| **Chrome** | `Chrome100`, `Chrome101`, `Chrome104`, `Chrome105`, `Chrome106`, `Chrome107`, `Chrome108`, `Chrome109`, `Chrome110`, `Chrome114`, `Chrome116`, `Chrome117`, `Chrome118`, `Chrome119`, `Chrome120`, `Chrome123`, `Chrome124`, `Chrome126`, `Chrome127`, `Chrome128`, `Chrome129`, `Chrome130`, `Chrome131`, `Chrome132`, `Chrome133`, `Chrome134`, `Chrome135`, `Chrome136`, `Chrome137`, `Chrome138`, `Chrome139`, `Chrome140`, `Chrome141`, `Chrome142`, `Chrome143`, `Chrome144`, `Chrome145` |
92+
| **Edge** | `Edge101`, `Edge122`, `Edge127`, `Edge131`, `Edge134`, `Edge135`, `Edge136`, `Edge137`, `Edge138`, `Edge139`, `Edge140`, `Edge141`, `Edge142`, `Edge143`, `Edge144`, `Edge145` |
93+
| **Firefox** | `Firefox109`, `Firefox117`, `Firefox128`, `Firefox133`, `Firefox135`, `FirefoxPrivate135`, `FirefoxAndroid135`, `Firefox136`, `FirefoxPrivate136`, `Firefox139`, `Firefox142`, `Firefox143`, `Firefox144`, `Firefox145`, `Firefox146`, `Firefox147` |
94+
| **Safari** | `Safari15_3`, `Safari15_5`, `Safari15_6_1`, `Safari16`, `Safari16_5`, `Safari17_0`, `Safari17_2_1`, `Safari17_4_1`, `Safari17_5`, `Safari17_6`, `Safari18`, `Safari18_2`, `Safari18_3`, `Safari18_3_1`, `Safari18_5`, `Safari26`, `Safari26_1`, `Safari26_2`, `SafariIos16_5`, `SafariIos17_2`, `SafariIos17_4_1`, `SafariIos18_1_1`, `SafariIos26`, `SafariIos26_2`, `SafariIPad18`, `SafariIPad26`, `SafariIpad26_2` |
95+
| **OkHttp** | `OkHttp3_9`, `OkHttp3_11`, `OkHttp3_13`, `OkHttp3_14`, `OkHttp4_9`, `OkHttp4_10`, `OkHttp4_12`, `OkHttp5` |
96+
| **Opera** | `Opera116`, `Opera117`, `Opera118`, `Opera119` |
8697

8798
</details>
8899

@@ -106,22 +117,34 @@ gem build wreq.gemspec
106117
gem install wreq-*.gem
107118

108119
# Option 2: Build pre-compiled platform gem (recommended for distribution)
109-
# This creates a platform-specific gem (e.g., wreq-0.1.0-arm64-darwin.gem)
120+
# This creates a platform-specific gem (e.g., wreq-0.1.0-arm64-darwin.gem)
110121
# with pre-compiled binaries. Users can install quickly without build environment.
111122
bundle exec rake compile
112123
bundle exec rake native gem
113124
gem install pkg/wreq-*.gem
114125

115126
# Development workflow
116127
bundle exec rake compile # Compile for development/testing
117-
bundle exec rake test # Run tests
128+
bundle exec rake test # Run tests
118129
bundle exec ruby examples/body.rb # Run examples without installing
119130
```
120131

121132
## License
122133

123134
Licensed under either of Apache License, Version 2.0 ([LICENSE](./LICENSE) or http://www.apache.org/licenses/LICENSE-2.0).
124135

125-
## Contribution
136+
## Contributing
126137

127138
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the [Apache-2.0](./LICENSE) license, shall be licensed as above, without any additional terms or conditions.
139+
140+
## Maintained by
141+
142+
<a href="https://www.searchapi.io">
143+
<picture>
144+
<source media="(prefers-color-scheme: dark)" srcset="https://www.searchapi.io/press/v2/svg/searchapi_logo_white_h.svg">
145+
<source media="(prefers-color-scheme: light)" srcset="https://www.searchapi.io/press/v2/svg/searchapi_logo_black_h.svg">
146+
<img alt="SearchAPI" src="https://www.searchapi.io/press/v2/svg/searchapi_logo_black_h.svg" height="40px" style="vertical-align: middle;">
147+
</picture>
148+
</a>
149+
150+
[SearchApi](https://www.searchapi.io) - real-time low-latency SERP API with 100+ scrapers. Trusted by Fortune 500 and leading AI companies.

wreq.gemspec

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ Gem::Specification.new do |spec|
2222
.fetch("version")
2323
spec.authors = ["SearchApi"]
2424
spec.email = ["support@searchapi.io"]
25-
spec.summary = "Ruby bindings for Wreq, HTTP client library in Rust."
26-
spec.homepage = "https://github.com/SearchApi"
25+
spec.summary = "Ruby bindings for wreq, an HTTP client with TLS/HTTP2 browser fingerprinting"
26+
spec.description = "An easy and powerful Ruby HTTP client with advanced browser fingerprinting " \
27+
"that accurately emulates Chrome, Edge, Firefox, Safari, Opera, and OkHttp " \
28+
"with precise TLS/HTTP2 signatures. Powered by wreq (Rust) and BoringSSL."
29+
spec.homepage = "https://github.com/SearchApi/wreq-ruby"
2730
spec.license = "Apache-2.0"
2831
spec.metadata = {
2932
"bug_tracker_uri" => "https://github.com/SearchApi/wreq-ruby/issues",
3033
"changelog_uri" => "https://github.com/SearchApi/wreq-ruby/releases",
31-
"documentation_uri" => "https://github.com/SearchApi/wreq-ruby/README.md",
34+
"documentation_uri" => "https://github.com/SearchApi/wreq-ruby#readme",
3235
"homepage_uri" => spec.homepage,
3336
"source_code_uri" => "https://github.com/SearchApi/wreq-ruby",
3437
"rubygems_mfa_required" => "true"
@@ -51,7 +54,7 @@ Gem::Specification.new do |spec|
5154
spec.extensions = ["./extconf.rb"]
5255

5356
# Exclude non-Ruby files from RDoc to prevent parsing errors
54-
spec.rdoc_options = ["--exclude", "Cargo\\..*", "--exclude", "--exclude", "\\.rs$"]
57+
spec.rdoc_options = ["--exclude", "Cargo\\..*", "--exclude", "\\.rs$"]
5558

5659
spec.requirements = ["Rust >= 1.85"]
5760
# use a Ruby version which:

0 commit comments

Comments
 (0)