ethon-impersonate 0.17.8-x86_64-linux → 0.17.10-x86_64-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c20f711f0aa500b837a4ad508f7935979bd4a86ed577834f7c43f880e3dcde63
4
- data.tar.gz: a57ab887afeb1fad2e7935faea92dc5905174a395b42204a39d8a49007b587f2
3
+ metadata.gz: 775631cd3d32e13e02d756e829ca8bb1936eb173ab7320b6c4b248382ef9cbb3
4
+ data.tar.gz: 81b45da78987ee62b98d7f468ff36fd853804fb9623d693b6bb32f2cc30cb0c4
5
5
  SHA512:
6
- metadata.gz: 2faac26182de705bfaa4f5beb9b85b126a03a9358d8a53d6e569be37845e27d1e04ecf324161e3fbfcca20a75a14e31872541e027c2d6997257bd4b53559f034
7
- data.tar.gz: 839382d745eada6022caa13b786746aac2304707ec4c749d760682973ce343c287bd030fe83579d330c158199ee5bb24c5562b9f12554ddcfff16687025403d1
6
+ metadata.gz: 726c7e6298657a0dfab907c7e8210de943ea7643b47260f0bfb5085915b7b1c4920af7365c7aeb11144a6785945442d9df27b9b62e0aff145fd6ef9abefa23a9
7
+ data.tar.gz: 1eba7f88860e54113257d011738934da2f5acdbb61a7d77251e72d077cd13620319babd91346e70ad63c89ccb33da2e7997ed31415fb02a5d188bcc00279deaa
data/CHANGELOG.md CHANGED
@@ -2,49 +2,61 @@
2
2
 
3
3
  ## Master
4
4
 
5
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.16.0...master)
5
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.17.9...master)
6
+
7
+ ## 0.17.9
8
+
9
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.17.8...v0.17.9)
10
+
11
+ * Bumped [`curl-impersonate`](https://github.com/lexiforest/curl-impersonate) to `v1.0.0`
12
+
13
+ ## 0.17.8
14
+
15
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.16.0...v0.17.8)
16
+
17
+ * Added basic support for [`curl-impersonate`](https://github.com/lexiforest/curl-impersonate) @ `v1.0.0rc1`
6
18
 
7
19
  ## 0.16.0
8
20
 
9
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.15.0...v0.16.0)
21
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.15.0...v0.16.0)
10
22
 
11
23
  * Added `redirect_url` value to available informations and `Easy::Mirror`.
12
24
  ([Adrien Rey-Jarthon](https://github.com/jarthod)
13
25
 
14
26
  ## 0.15.0
15
27
 
16
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.14.0...v0.15.0)
28
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.14.0...v0.15.0)
17
29
 
18
30
  ## 0.12.0
19
31
 
20
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.11.0...v0.12.0)
32
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.11.0...v0.12.0)
21
33
 
22
- - Removed deprecated `CURLE_SSL_CACERT` pinned in curl v7.62.0 ([@arku](https://github.com/arku) in [#158](https://github.com/dsojevic/ethon-impersonate/pull/158))
34
+ - Removed deprecated `CURLE_SSL_CACERT` pinned in curl v7.62.0 ([@arku](https://github.com/arku) in [#158](https://github.com/serpapi/ethon-impersonate/pull/158))
23
35
 
24
36
 
25
37
  ## 0.11.0
26
38
 
27
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.10.1...v0.11.0)
39
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.10.1...v0.11.0)
28
40
 
29
41
  ## 0.10.1
30
42
 
31
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.10.0...v0.10.1)
43
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.10.0...v0.10.1)
32
44
 
33
45
  ## 0.10.0
34
46
 
35
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.9.1...v0.10.0)
47
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.9.1...v0.10.0)
36
48
 
37
49
  ## 0.9.1
38
50
 
39
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.9.0...v0.9.1)
51
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.9.0...v0.9.1)
40
52
 
41
53
  ## 0.9.0
42
54
 
43
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.8.1...v0.9.0)
55
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.8.1...v0.9.0)
44
56
 
45
57
  ## 0.8.1
46
58
 
47
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.8.0...v0.8.1)
59
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.8.0...v0.8.1)
48
60
 
49
61
  * Support optional escaping of params.
50
62
  ([Tasos Laskos](https://github.com/zapotek)
@@ -53,24 +65,24 @@
53
65
 
54
66
  ## 0.8.0
55
67
 
56
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.7.3...v0.7.4)
68
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.7.3...v0.7.4)
57
69
 
58
70
  * `Easy::Mirror`: Reduced object allocations and method calls during info handling.
59
71
  ([Tasos Laskos](https://github.com/zapotek)
60
72
 
61
73
  ## 0.7.4
62
74
 
63
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.7.3...v0.7.4)
75
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.7.3...v0.7.4)
64
76
 
65
77
  * Support different array encodings for params.
66
- ([Marcello Barnaba](https://github.com/ifad), [\#104](https://github.com/dsojevic/ethon-impersonate/pull/104))
78
+ ([Marcello Barnaba](https://github.com/ifad), [\#104](https://github.com/serpapi/ethon-impersonate/pull/104))
67
79
  * Programtic access to version infos.
68
- ([Jonas Wagner](https://github.com/jwagner), [\#90](https://github.com/dsojevic/ethon-impersonate/pull/90))
80
+ ([Jonas Wagner](https://github.com/jwagner), [\#90](https://github.com/serpapi/ethon-impersonate/pull/90))
69
81
 
70
82
 
71
83
  ## 0.7.3
72
84
 
73
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.7.2...v0.7.3)
85
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.7.2...v0.7.3)
74
86
 
75
87
  * `EthonImpersonate::Curl::FDSet`
76
88
  * Set `:fd_array` size to the current MS Windows `FD_SETSIZE` (2048).
@@ -81,7 +93,7 @@
81
93
 
82
94
  ## 0.7.2
83
95
 
84
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.7.1...v0.7.2)
96
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.7.1...v0.7.2)
85
97
 
86
98
  * FFI data-types updated to be more correct.
87
99
 
@@ -96,25 +108,25 @@ Not backwards compatible changes:
96
108
 
97
109
  * `mime-types` are no longer a dependency. The gem will be still used if available to determine the mime type of a file which is uploaded. That means you have to have take care of the gem installation yourself.
98
110
 
99
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.6.3...v0.7.0)
111
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.6.3...v0.7.0)
100
112
 
101
113
  ## 0.6.3
102
114
 
103
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.6.2...v0.6.3)
115
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.6.2...v0.6.3)
104
116
 
105
117
  ## 0.6.2
106
118
 
107
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.6.1...v0.6.2)
119
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.6.1...v0.6.2)
108
120
 
109
121
  ## 0.6.1
110
122
 
111
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.6.0...v0.6.1)
123
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.6.0...v0.6.1)
112
124
 
113
125
  The changelog entries are coming soon!
114
126
 
115
127
  ## 0.6.0
116
128
 
117
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.12...v0.6.0)
129
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.12...v0.6.0)
118
130
 
119
131
  The changelog entries are coming soon!
120
132
 
@@ -125,59 +137,59 @@ Bugfixes:
125
137
 
126
138
  ## 0.5.12
127
139
 
128
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.11...v0.5.12)
140
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.11...v0.5.12)
129
141
 
130
142
  Enhancements:
131
143
 
132
144
  * Performance optimizations.
133
- ([Kyle Oppenheim](https://github.com/koppenheim) and [Richie Vos](https://github.com/richievos), [\#48](https://github.com/dsojevic/ethon-impersonate/pull/48))
145
+ ([Kyle Oppenheim](https://github.com/koppenheim) and [Richie Vos](https://github.com/richievos), [\#48](https://github.com/serpapi/ethon-impersonate/pull/48))
134
146
  * Reuse memory pointer.
135
- ([Richie Vos](https://github.com/richievos), [\#49](https://github.com/dsojevic/ethon-impersonate/pull/49))
147
+ ([Richie Vos](https://github.com/richievos), [\#49](https://github.com/serpapi/ethon-impersonate/pull/49))
136
148
 
137
149
  Bugfixes:
138
150
 
139
151
  * Fix windows install.
140
- ([Derik Olsson](https://github.com/derikolsson), [\#47](https://github.com/dsojevic/ethon-impersonate/pull/47))
152
+ ([Derik Olsson](https://github.com/derikolsson), [\#47](https://github.com/serpapi/ethon-impersonate/pull/47))
141
153
  * Handle urls that already contain query params.
142
- ([Turner King](https://github.com/turnerking ), [\#45](https://github.com/dsojevic/ethon-impersonate/pull/45))
154
+ ([Turner King](https://github.com/turnerking ), [\#45](https://github.com/serpapi/ethon-impersonate/pull/45))
143
155
 
144
156
  ## 0.5.11
145
157
 
146
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.10...v0.5.11)
158
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.10...v0.5.11)
147
159
 
148
160
  Enhancements:
149
161
 
150
162
  * Add support for postredirs, unrestricted_auth.
151
163
  * Add support for cookie, cookiejar, cookiefile.
152
- ([erwanlr](https://github.com/erwanlr), [\#46](https://github.com/dsojevic/ethon-impersonate/pull/46))
164
+ ([erwanlr](https://github.com/erwanlr), [\#46](https://github.com/serpapi/ethon-impersonate/pull/46))
153
165
  * Relax ffi requirements.
154
- ([voxik](https://github.com/voxik), [\#40](https://github.com/dsojevic/ethon-impersonate/pull/40))
166
+ ([voxik](https://github.com/voxik), [\#40](https://github.com/serpapi/ethon-impersonate/pull/40))
155
167
  * Various documentation improvements.
156
168
  ([Craig Little](https://github.com/craiglittle))
157
169
 
158
170
  Bugfixes:
159
171
 
160
172
  * Fix the memory leaks.
161
- ([Richie Vos](https://github.com/richievos), [\#45](https://github.com/dsojevic/ethon-impersonate/pull/45))
173
+ ([Richie Vos](https://github.com/richievos), [\#45](https://github.com/serpapi/ethon-impersonate/pull/45))
162
174
 
163
175
  ## 0.5.10
164
176
 
165
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.9...v0.5.10)
177
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.9...v0.5.10)
166
178
 
167
179
  Enhancements:
168
180
 
169
181
  * Allow custom requests.
170
- ([Nathan Sutton](https://github.com/nate), [\#36](https://github.com/dsojevic/ethon-impersonate/pull/36))
182
+ ([Nathan Sutton](https://github.com/nate), [\#36](https://github.com/serpapi/ethon-impersonate/pull/36))
171
183
  * Use updated version of FFI.
172
184
 
173
185
  Bugfixes:
174
186
 
175
187
  * Fix windows install issue.
176
- ([brainsucker](https://github.com/brainsucker), [\#38](https://github.com/dsojevic/ethon-impersonate/pull/38))
188
+ ([brainsucker](https://github.com/brainsucker), [\#38](https://github.com/serpapi/ethon-impersonate/pull/38))
177
189
 
178
190
  ## 0.5.9
179
191
 
180
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.8...v0.5.9)
192
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.8...v0.5.9)
181
193
 
182
194
  Enhancements:
183
195
 
@@ -185,17 +197,17 @@ Enhancements:
185
197
 
186
198
  ## 0.5.8
187
199
 
188
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.7...v0.5.8)
200
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.7...v0.5.8)
189
201
 
190
202
  Enhancements:
191
203
 
192
204
  * Add support for protocols and redir_protocols(
193
205
  [libcurl SASL buffer overflow vulnerability](http://curl.haxx.se/docs/adv_20130206.html)).
194
- * Add max_send_speed_large and max_recv_speed_large([Paul Schuegraf](https://github.com/pschuegr), [\#33](https://github.com/dsojevic/ethon-impersonate/pull/33))
206
+ * Add max_send_speed_large and max_recv_speed_large([Paul Schuegraf](https://github.com/pschuegr), [\#33](https://github.com/serpapi/ethon-impersonate/pull/33))
195
207
 
196
208
  ## 0.5.7
197
209
 
198
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.6...v0.5.7)
210
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.6...v0.5.7)
199
211
 
200
212
  Enhancements:
201
213
 
@@ -203,7 +215,7 @@ Enhancements:
203
215
 
204
216
  ## 0.5.6
205
217
 
206
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.4...v0.5.6)
218
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.4...v0.5.6)
207
219
 
208
220
  Bugfixes:
209
221
 
@@ -211,7 +223,7 @@ Bugfixes:
211
223
 
212
224
  ## 0.5.4
213
225
 
214
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.3...v0.5.4)
226
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.3...v0.5.4)
215
227
 
216
228
  Enhancements:
217
229
 
@@ -221,7 +233,7 @@ Enhancements:
221
233
 
222
234
  ## 0.5.3
223
235
 
224
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.2...v0.5.3)
236
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.2...v0.5.3)
225
237
 
226
238
  Enhancements:
227
239
 
@@ -236,7 +248,7 @@ Bugfixes:
236
248
 
237
249
  ## 0.5.2
238
250
 
239
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.1...v0.5.2)
251
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.1...v0.5.2)
240
252
 
241
253
  Enhancements:
242
254
 
@@ -249,7 +261,7 @@ Bugfixes:
249
261
 
250
262
  ## 0.5.1
251
263
 
252
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.5.0...v0.5.1)
264
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.5.0...v0.5.1)
253
265
 
254
266
  Bugfixes:
255
267
 
@@ -258,7 +270,7 @@ Bugfixes:
258
270
 
259
271
  ## 0.5.0
260
272
 
261
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.4.4...v0.5.0)
273
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.4.4...v0.5.0)
262
274
 
263
275
  Enhancements:
264
276
 
@@ -272,7 +284,7 @@ Bugfixes:
272
284
 
273
285
  ## 0.4.4
274
286
 
275
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.4.3...v0.4.4)
287
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.4.3...v0.4.4)
276
288
 
277
289
  Enhancements:
278
290
 
@@ -280,7 +292,7 @@ Enhancements:
280
292
 
281
293
  ## 0.4.3
282
294
 
283
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.4.2...v0.4.3)
295
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.4.2...v0.4.3)
284
296
 
285
297
  Enhancements:
286
298
 
@@ -295,7 +307,7 @@ Bugfixes:
295
307
 
296
308
  ## 0.4.2
297
309
 
298
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.4.1...v0.4.2)
310
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.4.1...v0.4.2)
299
311
 
300
312
  Enhancements:
301
313
 
@@ -304,7 +316,7 @@ Enhancements:
304
316
 
305
317
  ## 0.4.1
306
318
 
307
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.4.0...v0.4.1)
319
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.4.0...v0.4.1)
308
320
 
309
321
  Bugfixes:
310
322
 
@@ -313,7 +325,7 @@ Bugfixes:
313
325
 
314
326
  ## 0.4.0
315
327
 
316
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.3.0...v0.4.0)
328
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.3.0...v0.4.0)
317
329
 
318
330
  Enhancements:
319
331
 
@@ -328,7 +340,7 @@ Bugfixes:
328
340
 
329
341
  ## 0.3.0
330
342
 
331
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.2.0...v0.3.0)
343
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.2.0...v0.3.0)
332
344
 
333
345
  Enhancements:
334
346
 
@@ -341,7 +353,7 @@ Bugfixes:
341
353
 
342
354
  ## 0.2.0
343
355
 
344
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.1.0...v0.2.0)
356
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.1.0...v0.2.0)
345
357
 
346
358
  Enhancements:
347
359
 
@@ -353,12 +365,12 @@ Enhancements:
353
365
 
354
366
  ## 0.1.0
355
367
 
356
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.0.2...v0.1.0)
368
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.0.2...v0.1.0)
357
369
 
358
370
  Enhancements:
359
371
 
360
372
  * Documentation
361
- ( [Alex P](https://github.com/ifesdjeen), [\#13](https://github.com/dsojevic/ethon-impersonate/issues/13) )
373
+ ( [Alex P](https://github.com/ifesdjeen), [\#13](https://github.com/typhoeus/ethon/issues/13) )
362
374
  * New libcurl option dns_cache_timeout
363
375
  ( [Chris Heald](https://github.com/cheald), [\#192](https://github.com/typhoeus/typhoeus/pull/192) )
364
376
 
@@ -369,7 +381,7 @@ Bugfixes:
369
381
 
370
382
  ## 0.0.2
371
383
 
372
- [Full Changelog](https://github.com/dsojevic/ethon-impersonate/compare/v0.0.1...v0.0.2)
384
+ [Full Changelog](https://github.com/serpapi/ethon-impersonate/compare/v0.0.1...v0.0.2)
373
385
 
374
386
  Bugfixes:
375
387
 
data/LICENSE CHANGED
@@ -1,3 +1,4 @@
1
+ Copyright (c) 2025 SerpApi
1
2
  Copyright (c) 2012-2016 Hans Hasselberg
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining
data/README.md CHANGED
@@ -1,10 +1,15 @@
1
+
2
+
3
+ # Ethon Impersonate ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_24x24.png "Chrome") ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_24x24.png "Edge") ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_24x24.png "Safari") ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_24x24.png "Firefox") ![Tor](https://raw.githubusercontent.com/alrra/browser-logos/main/src/tor/tor_24x24.png "Tor")
4
+
1
5
  [![Gem Version](https://badge.fury.io/rb/ethon-impersonate.svg)](https://badge.fury.io/rb/ethon-impersonate)
2
- [![Build Status](https://github.com/dsojevic/ethon-impersonate/workflows/Ruby/badge.svg)](https://github.com/dsojevic/ethon-impersonate/actions/workflows/ruby.yml)
6
+ [![Build Status](https://github.com/serpapi/ethon-impersonate/workflows/Ruby/badge.svg)](https://github.com/serpapi/ethon-impersonate/actions/workflows/ruby.yml)
3
7
 
4
- # Ethon Impersonate
8
+ **Ethon Impersonate** is a fork of [Ethon](https://github.com/typhoeus/ethon) that wraps [libcurl-impersonate](https://github.com/lexiforest/curl-impersonate).
5
9
 
6
10
  In Greek mythology, Ethon, the son of Typhoeus and Echidna, is a gigantic eagle. So much for the history.
7
- In the modern world, Ethon is a very basic libcurl wrapper using ffi.
11
+
12
+ This allows you to make HTTP requests that appear to come from real browsers, helping to bypass bot detection and fingerprinting.
8
13
 
9
14
  ## Installation
10
15
 
@@ -18,6 +23,15 @@ With rubygems:
18
23
  gem install ethon-impersonate
19
24
  ```
20
25
 
26
+ ## Dependencies
27
+ On MacOS Apple Silicon, you need to install the following dependencies using Homebrew:
28
+
29
+ ```bash
30
+ brew install libidn2 rtmpdump zstd
31
+ ```
32
+
33
+ Note: Homebrew must be loaded in the same arch than the Ruby interpreter. If you are using `arch -x86_64` to run Ruby, you must also run Homebrew with `arch -x86_64 brew install ...`.
34
+
21
35
  ## Usage
22
36
 
23
37
  Making the first request is simple:
@@ -47,6 +61,52 @@ easy.response_body
47
61
  #=> "<!doctype html><html ..."
48
62
  ```
49
63
 
64
+ ## Browser Impersonation
65
+
66
+ The main feature of this gem is the ability to impersonate real browsers. Use the `impersonate` method to configure the request to look like it's coming from a specific browser:
67
+
68
+ ```ruby
69
+ easy = EthonImpersonate::Easy.new(url: "www.example.com")
70
+ easy.impersonate("chrome136") # Impersonate Chrome 136
71
+ easy.perform
72
+ easy.response_code
73
+ #=> 200
74
+ ```
75
+
76
+ ### Available Browser Targets
77
+
78
+ The gem supports all browser targets available in curl-impersonate. Some popular targets include:
79
+
80
+ - **Chrome**: `chrome136`, `chrome131_android`
81
+ - **Firefox**: `firefox135`
82
+ - **Safari**: `safari184`, `safari184_ios`
83
+ - **Edge**: `edge101`
84
+ - **Tor**: `tor145`
85
+
86
+ For a complete list of available targets, see the [curl-impersonate bin directory](https://github.com/lexiforest/curl-impersonate/tree/main/bin).
87
+
88
+ ### Example with Browser Impersonation
89
+
90
+ ```ruby
91
+ # Impersonate Chrome 136
92
+ easy = EthonImpersonate::Easy.new(url: "https://tls.browserleaks.com/json")
93
+ easy.impersonate("chrome136")
94
+ easy.perform
95
+ #=> :ok
96
+
97
+ # Impersonate Firefox 135
98
+ easy = EthonImpersonate::Easy.new(url: "https://tls.browserleaks.com/json")
99
+ easy.impersonate("firefox135")
100
+ easy.perform
101
+ #=> :ok
102
+
103
+ # Impersonate Safari 184
104
+ easy = EthonImpersonate::Easy.new(url: "https://tls.browserleaks.com/json")
105
+ easy.impersonate("safari184")
106
+ easy.perform
107
+ #=> :ok
108
+ ```
109
+
50
110
  ## Http
51
111
 
52
112
  In order to make life easier, there are some helpers for making HTTP requests:
@@ -91,26 +151,14 @@ multi.add(easy)
91
151
  multi.perform
92
152
  ```
93
153
 
94
- ## LICENSE
154
+ ## Sponsors
95
155
 
96
- (The MIT License)
156
+ Ethon Impersonate is maintained by **SerpApi**.
97
157
 
98
- Copyright © 2012-2016 [Hans Hasselberg](http://www.hans.io)
158
+ Thanks to all <a href="https://github.com/serpapi/ethon-impersonate/graphs/contributors">contributors</a> of this project past and present.
99
159
 
100
- Permission is hereby granted, free of charge, to any person obtaining a
101
- copy of this software and associated documentation files (the "Software"),
102
- to deal in the Software without restriction, including without
103
- limitation the rights to use, copy, modify, merge, publish, distribute,
104
- sublicense, and/or sell copies of the Software, and to permit persons
105
- to whom the Software is furnished to do so, subject to the following conditions:
160
+ ------
106
161
 
107
- The above copyright notice and this permission notice shall be included
108
- in all copies or substantial portions of the Software.
162
+ <a href="https://serpapi.com/" target="_blank"><img src="https://raw.githubusercontent.com/serpapi/ethon-impersonate/master/assets/serpapi.png" alt="SerpAPI" height="67" width="63"></a>
109
163
 
110
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
111
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
112
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
113
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
114
- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
115
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
116
- OTHER DEALINGS IN THE SOFTWARE.
164
+ Scrape Google and other search engines from [SerpApi](https://serpapi.com/)'s fast, easy, and complete API. 0.66s average response time (≤ 0.5s for Ludicrous Speed Max accounts), 99.95% SLAs, pay for successful responses only.
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.platform = Gem::Platform::RUBY
12
12
  s.authors = ["David Sojevic", "Hans Hasselberg"]
13
13
  s.email = ["david@sojevic.com"]
14
- s.homepage = "https://github.com/dsojevic/ethon-impersonate"
14
+ s.homepage = "https://github.com/serpapi/ethon-impersonate"
15
15
  s.summary = "Impersonate browser-like HTTP requests."
16
16
  s.description = "Realistic browser-like HTTP requests using curl-impersonate's impersonation capabilities."
17
17
 
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.files = Dir.chdir(__dir__) do
25
25
  `git ls-files -z`.split("\x0")
26
- end.reject { |file| file.start_with?(*%w[. Gemfile Guardfile Rakefile profile spec scripts]) || file.end_with?(".gitignore") }
26
+ end.reject { |file| file.start_with?(*%w[. Gemfile Guardfile Rakefile profile spec scripts assets]) || file.end_with?(".gitignore") }
27
27
 
28
28
  s.require_path = "lib"
29
29
  end
Binary file
@@ -32,7 +32,7 @@ module EthonImpersonate
32
32
 
33
33
  def clear; self[:fd_count] = 0; end
34
34
  else
35
- # https://github.com/dsojevic/ethon-impersonate/issues/182
35
+ # https://github.com/typhoeus/ethon/issues/182
36
36
  FD_SETSIZE = begin
37
37
  # Allow to override the (new) default cap
38
38
  if ENV['ETHON_FD_SIZE']
@@ -25,7 +25,11 @@ module EthonImpersonate
25
25
  headers ||= {}
26
26
  header_list = nil
27
27
  headers.each do |k, v|
28
- header_list = Curl.slist_append(header_list, compose_header(k,v))
28
+ v_list = v.is_a?(Array) ? v : [v]
29
+
30
+ v_list.each do |v_item|
31
+ header_list = Curl.slist_append(header_list, compose_header(k,v_item))
32
+ end
29
33
  end
30
34
  Curl.set_option(:httpheader, header_list, handle)
31
35
 
@@ -6,7 +6,7 @@ require "ffi/platform"
6
6
  module EthonImpersonate
7
7
  module Impersonate
8
8
  module Settings
9
- LIB_VERSION = "1.0.0rc1"
9
+ LIB_VERSION = "1.1.0"
10
10
  LIB_EXT_PATH = File.expand_path("../../ext/", File.dirname(__dir__))
11
11
 
12
12
  LIB_DOWNLOAD_BASE_URL = "https://github.com/lexiforest/curl-impersonate/releases/download/v#{LIB_VERSION}/"
@@ -25,12 +25,13 @@ module EthonImpersonate
25
25
  # "i686-windows" => "libcurl-impersonate-v#{LIB_VERSION}.i686-win32.tar.gz",
26
26
  # "riscv64-linux" => "libcurl-impersonate-v#{LIB_VERSION}.riscv64-linux-gnu.tar.gz",
27
27
  "x86_64-linux" => "libcurl-impersonate-v#{LIB_VERSION}.x86_64-linux-gnu.tar.gz",
28
- # "x86_64-darwin" => "libcurl-impersonate-v#{LIB_VERSION}.x86_64-macos.tar.gz",
28
+ "x86_64-darwin" => "libcurl-impersonate-v#{LIB_VERSION}.x86_64-macos.tar.gz",
29
29
  # "x86_64-windows" => "libcurl-impersonate-v#{LIB_VERSION}.x86_64-win32.tar.gz",
30
30
  }.freeze
31
31
 
32
32
  GEM_PLATFORMS_MAP = {
33
- "aarch64-darwin" => ["arm64-darwin-24"],
33
+ "aarch64-darwin" => ["arm64-darwin-24", "arm64-darwin"],
34
+ "x86_64-darwin" => ["x86_64-darwin-24"],
34
35
  "x86_64-windows" => ["x64-mingw32"],
35
36
  }.freeze
36
37
 
@@ -21,6 +21,7 @@ module EthonImpersonate
21
21
  "chrome124",
22
22
  "chrome131",
23
23
  "chrome133a",
24
+ "chrome136",
24
25
  ].freeze
25
26
 
26
27
  CHROME_TARGETS = [
@@ -39,15 +40,17 @@ module EthonImpersonate
39
40
  ].freeze
40
41
 
41
42
  SAFARI_MOBILE_TARGETS = [
42
- "safari17_2_ios",
43
- "safari18_0_ios",
43
+ "safari172_ios",
44
+ "safari180_ios",
45
+ "safari184_ios",
44
46
  ].freeze
45
47
 
46
48
  SAFARI_DESKTOP_TARGETS = [
47
- "safari15_3",
48
- "safari15_5",
49
- "safari17_0",
50
- "safari18_0",
49
+ "safari153",
50
+ "safari155",
51
+ "safari170",
52
+ "safari180",
53
+ "safari184",
51
54
  ].freeze
52
55
 
53
56
  SAFARI_TARGETS = [
@@ -55,11 +58,16 @@ module EthonImpersonate
55
58
  *SAFARI_DESKTOP_TARGETS,
56
59
  ].freeze
57
60
 
61
+ TOR_TARGETS = [
62
+ "tor145",
63
+ ].freeze
64
+
58
65
  ALL_TARGETS = [
59
- *EDGE_TARGETS,
60
66
  *CHROME_TARGETS,
61
- *SAFARI_TARGETS,
67
+ *EDGE_TARGETS,
62
68
  *FIREFOX_TARGETS,
69
+ *SAFARI_TARGETS,
70
+ *TOR_TARGETS,
63
71
  ].freeze
64
72
 
65
73
  ALIASES = {
@@ -69,6 +77,7 @@ module EthonImpersonate
69
77
  "firefox" => FIREFOX_TARGETS.last,
70
78
  "safari" => SAFARI_DESKTOP_TARGETS.last,
71
79
  "safari_ios" => SAFARI_MOBILE_TARGETS.last,
80
+ "tor" => TOR_TARGETS.last,
72
81
  }.freeze
73
82
 
74
83
  BROWSERS = [
@@ -76,6 +85,7 @@ module EthonImpersonate
76
85
  *EDGE_TARGETS,
77
86
  *FIREFOX_TARGETS,
78
87
  *SAFARI_TARGETS,
88
+ *TOR_TARGETS,
79
89
  *ALIASES.keys,
80
90
  ].freeze
81
91
 
@@ -2,5 +2,5 @@
2
2
  module EthonImpersonate
3
3
 
4
4
  # EthonImpersonate version.
5
- VERSION = "0.17.8"
5
+ VERSION = "0.17.10"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ethon-impersonate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.8
4
+ version: 0.17.10
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - David Sojevic
8
8
  - Hans Hasselberg
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-17 00:00:00.000000000 Z
11
+ date: 2025-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -98,7 +98,7 @@ files:
98
98
  - lib/ethon_impersonate/multi/options.rb
99
99
  - lib/ethon_impersonate/multi/stack.rb
100
100
  - lib/ethon_impersonate/version.rb
101
- homepage: https://github.com/dsojevic/ethon-impersonate
101
+ homepage: https://github.com/serpapi/ethon-impersonate
102
102
  licenses:
103
103
  - MIT
104
104
  metadata: {}