Commit 017dd1c
authored
fix(fingerprints): enforce the user agent allow list so screen constraints are respected (#2110)
`ScreenOptions` were not respected - with `strict=True` fingerprint
generation failed, otherwise the screen
constraints were silently dropped and the fingerprint got a screen
outside of the requested range.
`browserforge` turns the screen constraints into an allow list of user
agents and passes it to the header
generator, but the generator only derives browser, operating system and
device from it and then samples the
user agent freely - so the result is often outside the list, and the
fingerprint network finds no consistent
sample. `apify-fingerprint-datapoints` 0.14.0 made that deterministic
for some inputs, hence the cap in #2107.
`PatchedHeaderGenerator` now enforces the allow list: a user agent
outside it pins the next attempt to an
allowed one with the same browser, operating system and device. If
nothing is interchangeable or the attempts
run out, the wider header is returned, so inputs that worked before keep
working.
Measured on 0.14.0, before -> after:
| Case | Before | After |
| --- | --- | --- |
| `strict` Firefox + Windows, screen `600-1800 x 400-1200` | 299/300
fail, 480 ms each | 0/500 fail, 90 ms each |
| Firefox + Android, screen `300-600 x 500-1200` | ~40% of screens out
of range | 0/2000 out of range |
Also drops the `apify-fingerprint-datapoints<0.14.0` caps from #2107.
`test_fingerprint_generator_respects_screen_options_without_strict`
covers the non-strict path; it and
`test_fingerprint_generator_all_options` fail on `master` with the
0.14.0 datapoints.
Closes: #2108
*✍️ Drafted by Claude Code*1 parent f23d27f commit 017dd1c
4 files changed
Lines changed: 103 additions & 16 deletions
File tree
- src/crawlee/fingerprint_suite
- tests/unit/fingerprint_suite
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
60 | | - | |
| 59 | + | |
61 | 60 | | |
62 | 61 | | |
63 | 62 | | |
| |||
70 | 69 | | |
71 | 70 | | |
72 | 71 | | |
73 | | - | |
74 | | - | |
| 72 | + | |
75 | 73 | | |
76 | | - | |
| 74 | + | |
77 | 75 | | |
78 | 76 | | |
79 | 77 | | |
| |||
90 | 88 | | |
91 | 89 | | |
92 | 90 | | |
93 | | - | |
94 | | - | |
| 91 | + | |
95 | 92 | | |
96 | 93 | | |
97 | 94 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
90 | 101 | | |
91 | 102 | | |
92 | 103 | | |
| |||
114 | 125 | | |
115 | 126 | | |
116 | 127 | | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
117 | 140 | | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
118 | 146 | | |
119 | 147 | | |
120 | 148 | | |
| |||
250 | 278 | | |
251 | 279 | | |
252 | 280 | | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
253 | 319 | | |
254 | 320 | | |
255 | 321 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
38 | 62 | | |
39 | 63 | | |
40 | 64 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments