/ src / views / documentation.tsx
documentation.tsx
  1  import { Component } from "solid-js";
  2  import Code from "../components/Code";
  3  import Md5HexDemo from "../components/demo/utils/md5hex";
  4  import UserAgentDataBrandsDemo from "../components/demo/enhanced_fp/user_agent_data_brands";
  5  import UserAgentDataMobileDemo from "../components/demo/enhanced_fp/user_agent_data_mobile";
  6  import NavigatorConnectionDownlinkDemo from "../components/demo/enhanced_fp/navigator_connection_downlink";
  7  import NavigatorConnectionDownlinkMaxDemo from "../components/demo/enhanced_fp/navigator_connection_downlink_max";
  8  import NetworkInfoRttDemo from "../components/demo/enhanced_fp/network_info_rtt";
  9  import NetworkInfoSaveDataDemo from "../components/demo/enhanced_fp/network_info_save_data";
 10  import ScreenPixelDepthDemo from "../components/demo/enhanced_fp/screen_pixel_depth";
 11  import NavigatorDeviceMemoryDemo from "../components/demo/enhanced_fp/navigator_device_memory";
 12  import NavigatorPdfViewerEnabledDemo from "../components/demo/enhanced_fp/navigator_pdf_viewer_enabled";
 13  import NavigatorLanguagesDemo from "../components/demo/enhanced_fp/navigator_languages";
 14  import WindowInnerWidthDemo from "../components/demo/enhanced_fp/window_inner_width";
 15  import WindowInnerHeightDemo from "../components/demo/enhanced_fp/window_inner_height";
 16  import WindowOuterHeightDemo from "../components/demo/enhanced_fp/window_outer_height";
 17  import WindowOuterWidthDemo from "../components/demo/enhanced_fp/window_outer_width";
 18  import BrowserDectectionFirefoxDemo from "../components/demo/enhanced_fp/browser_detection_firefox";
 19  import BrowserDetectionBraveDemo from "../components/demo/enhanced_fp/browser_detection_brave";
 20  import BrowserApiChecksDemo from "../components/demo/enhanced_fp/browser_api_checks";
 21  import BrowserObjectChecksDemo from "../components/demo/enhanced_fp/browser_object_checks";
 22  import AudioCodecsDemo from "../components/demo/enhanced_fp/audio_codecs";
 23  import AudioCodecsExtendedHashDemo from "../components/demo/enhanced_fp/audio_codecs_extended_hash";
 24  import WindowTreeStructureDemo from "../components/demo/enhanced_fp/window__tree_structure";
 25  import WindowLocationHrefDemo from "../components/demo/enhanced_fp/window__location_href";
 26  import MathFingerprintDemo from "../components/demo/enhanced_fp/math_fingerprint";
 27  import SupportedMathFunctionsDemo from "../components/demo/enhanced_fp/supported_math_functions";
 28  import ScreenOrientationDemo from "../components/demo/enhanced_fp/screen_orientation";
 29  import WebglAliasedLineWidthRangeDemo from "../components/demo/enhanced_fp/webgl_aliased_line_width_range";
 30  import WebglAliasedPointSizeRangeDemo from "../components/demo/enhanced_fp/webgl_aliased_point_size_range";
 31  import WebglAntialiasingDemo from "../components/demo/enhanced_fp/webgl_antialiasing";
 32  import WebglBitsDemo from "../components/demo/enhanced_fp/webgl_bits";
 33  import WebglExtensionsDemo from "../components/demo/enhanced_fp/webgl_extensions";
 34  import WebglExtensionsHashDemo from "../components/demo/enhanced_fp/webgl_extensions_hash";
 35  import WebglFsfParamsDemo from "../components/demo/enhanced_fp/webgl_fsf_params";
 36  import WebglFsiParamsDemo from "../components/demo/enhanced_fp/webgl_fsi_params";
 37  import WebglHashWebglDemo from "../components/demo/enhanced_fp/webgl_hash_webgl";
 38  import WebglMaxParamsDemo from "../components/demo/enhanced_fp/webgl_max_params";
 39  import WebglMaxViewportDimsDemo from "../components/demo/enhanced_fp/webgl_max_viewport_dims";
 40  import WebglRendererDemo from "../components/demo/enhanced_fp/webgl_renderer";
 41  import WebglShadingLanguageVersionDemo from "../components/demo/enhanced_fp/webgl_shading_language_version";
 42  import WebglUnmaskedRendererDemo from "../components/demo/enhanced_fp/webgl_unmasked_renderer";
 43  import WebglUnmaskedVendorDemo from "../components/demo/enhanced_fp/webgl_unmasked_vendor";
 44  import WebglVendorDemo from "../components/demo/enhanced_fp/webgl_vendor";
 45  import WebglVersionDemo from "../components/demo/enhanced_fp/webgl_version";
 46  import WebglVsfParamsDemo from "../components/demo/enhanced_fp/webgl_vsf_params";
 47  import WebglVsiParamsDemo from "../components/demo/enhanced_fp/webgl_vsi_params";
 48  import AsDemo from "../components/demo/fe/as";
 49  import BDemo from "../components/demo/fe/b";
 50  import CfpDemo from "../components/demo/fe/cfp";
 51  import CpucDemo from "../components/demo/fe/cpuc";
 52  import DDemo from "../components/demo/fe/d";
 53  import DntDemo from "../components/demo/fe/dnt";
 54  import FbDemo from "../components/demo/fe/fb";
 55  import FosDemo from "../components/demo/fe/fos";
 56  import FrDemo from "../components/demo/fe/fr";
 57  import HDemo from "../components/demo/fe/h";
 58  import IdbDemo from "../components/demo/fe/idb";
 59  import JsfDemo from "../components/demo/fe/jsf";
 60  import LDemo from "../components/demo/fe/l";
 61  import LsDemo from "../components/demo/fe/ls";
 62  import OdbDemo from "../components/demo/fe/odb";
 63  import PDemo from "../components/demo/fe/p";
 64  import PkDemo from "../components/demo/fe/pk";
 65  import PrDemo from "../components/demo/fe/pr";
 66  import SDemo from "../components/demo/fe/s";
 67  import SsDemo from "../components/demo/fe/ss";
 68  import SwfDemo from "../components/demo/fe/swf";
 69  import TDemo from "../components/demo/fe/t";
 70  import ToDemo from "../components/demo/fe/to";
 71  import NDemo from "../components/demo/n";
 72  import JsbdDemo from "../components/demo/jsbd";
 73  import U_f9bf2dbDemo from "../components/demo/enhanced_fp/u_f9bf2db";
 74  import U_3ea7194Demo from "../components/demo/enhanced_fp/u_3ea7194";
 75  
 76  const DocumentationView: Component = () => {
 77    return (
 78      <main class="max-w-1100px w-full mx-auto my-12 px-6">
 79        <h1 class="text-4xl font-black uppercase">Everything about BDA</h1>
 80        <p class="py-6">
 81          A deep focus on their{" "}
 82          <code class="bg-#24273a text-white px-2 py-.5 rounded">
 83            enforcement.js
 84          </code>{" "}
 85          script running in browser during captcha initialization.
 86          <br />
 87          Currently in version{" "}
 88          <code class="bg-#24273a text-white px-2 py-.5 rounded">2.17.2</code>
 89        </p>
 90        <section>
 91          <h2 class="text-2xl font-medium">
 92            Some utilities we'll use (written in TS)
 93          </h2>
 94          <p>
 95            They're either reimplementation of Arkose's code or direct adaptation.
 96          </p>
 97  
 98          <p>md5hex</p>
 99          <Md5HexDemo />
100  
101          <p>numberOrNull</p>
102          <Code
103            snippet={`
104  /**
105   * Returns a number if the input is a number, otherwise returns null.
106   *
107   * @example
108   * numberOrNull(42); // 42
109   * numberOrNull("not a number"); // null
110   */
111  export const numberOrNull = (num: unknown): number | null => {
112    return typeof num === "number" ? num : null;
113  };
114          `.trim()}
115          />
116  
117          <p>removeQueryParams</p>
118          <Code
119            snippet={`
120  /**
121   * Removes query parameters from a string, typically a URL.
122   *
123   * @example
124   * removeQueryParams("https://example.com/path?query=param"); // "https://example.com/path"
125   */
126  export const removeQueryParams = (input: string) => {
127    return input || typeof input === "string" ? input.split("?")[0] : null;
128  };
129          `.trim()}
130          />
131        </section>
132        <section>
133          <h2>api_type</h2>
134          <p>This value is always going to be "js"</p>
135        </section>
136        <section>
137          <h2 class="text-2xl font-bold font-mono">enhanced_fp</h2>
138  
139          <p>user_agent_data_brands</p>
140          <UserAgentDataBrandsDemo />
141          <p>user_agent_data_mobile</p>
142          <UserAgentDataMobileDemo />
143          <p>navigator_connection_downlink</p>
144          <NavigatorConnectionDownlinkDemo />
145          <p>navigator_connection_downlink_max</p>
146          <NavigatorConnectionDownlinkMaxDemo />
147          <p>network_info_rtt</p>
148          <NetworkInfoRttDemo />
149          <p>network_info_save_data</p>
150          <NetworkInfoSaveDataDemo />
151          <p>screen_pixel_depth</p>
152          <ScreenPixelDepthDemo />
153          <p>navigator_device_memory</p>
154          <NavigatorDeviceMemoryDemo />
155          <p>navigator_pdf_viewer_enabled</p>
156          <NavigatorPdfViewerEnabledDemo />
157          <p>navigator_languages</p>
158          <NavigatorLanguagesDemo />
159          <p>f9bf2db</p>
160          <U_f9bf2dbDemo />
161          <p>window_inner_width</p>
162          <WindowInnerWidthDemo />
163          <p>window_inner_height</p>
164          <WindowInnerHeightDemo />
165          <p>window_outer_width</p>
166          <WindowOuterWidthDemo />
167          <p>window_outer_height</p>
168          <WindowOuterHeightDemo />
169          <p>browser_detection_firefox</p>
170          <BrowserDectectionFirefoxDemo />
171          <p>browser_detection_brave</p>
172          <BrowserDetectionBraveDemo />
173          <p>f58835f (previously browser_api_checks)</p>
174          <BrowserApiChecksDemo />
175          <p>browser_object_checks</p>
176          <BrowserObjectChecksDemo />
177          <p>audio_codecs</p>
178          <AudioCodecsDemo />
179          <p>audio_codecs_extended_hash</p>
180          <AudioCodecsExtendedHashDemo />
181          <p>window__tree_structure</p>
182          <WindowTreeStructureDemo />
183          <p>window__location_href</p>
184          <WindowLocationHrefDemo />
185          <p>math_fingerprint</p>
186          <MathFingerprintDemo />
187          <p>supported_math_functions</p>
188          <SupportedMathFunctionsDemo />
189          <p>3ea7194</p>
190          <U_3ea7194Demo />
191          <p>3f76dd27 (previously, screen_orientation)</p>
192          <ScreenOrientationDemo />
193          <p>webgl_aliased_line_width_range</p>
194          <WebglAliasedLineWidthRangeDemo />
195          <p>webgl_aliased_point_size_range</p>
196          <WebglAliasedPointSizeRangeDemo />
197          <p>webgl_antialiasing</p>
198          <WebglAntialiasingDemo />
199          <p>webgl_bits</p>
200          <WebglBitsDemo />
201          <p>webgl_extensions</p>
202          <WebglExtensionsDemo />
203          <p>webgl_extensions_hash</p>
204          <WebglExtensionsHashDemo />
205          <p>webgl_fsf_params</p>
206          <WebglFsfParamsDemo />
207          <p>webgl_fsi_params</p>
208          <WebglFsiParamsDemo />
209          <p>webgl_hash_webgl</p>
210          <WebglHashWebglDemo />
211          <p>webgl_max_params</p>
212          <WebglMaxParamsDemo />
213          <p>webgl_max_viewport_dims</p>
214          <WebglMaxViewportDimsDemo />
215          <p>webgl_renderer</p>
216          <WebglRendererDemo />
217          <p>webgl_shading_language_version</p>
218          <WebglShadingLanguageVersionDemo />
219          <p>webgl_unmasked_renderer</p>
220          <WebglUnmaskedRendererDemo />
221          <p>webgl_unmasked_vendor</p>
222          <WebglUnmaskedVendorDemo />
223          <p>webgl_vendor</p>
224          <WebglVendorDemo />
225          <p>webgl_version</p>
226          <WebglVersionDemo />
227          <p>webgl_vsf_params</p>
228          <WebglVsfParamsDemo />
229          <p>webgl_vsi_params</p>
230          <WebglVsiParamsDemo />
231        </section>
232        <section>
233          <h2 class="text-2xl font-bold">fe</h2>
234  
235          <p>AS</p>
236          <AsDemo />
237          <p>B</p>
238          <BDemo />
239          <p>CFP</p>
240          <CfpDemo />
241          <p>CPUC</p>
242          <CpucDemo />
243          <p>D</p>
244          <DDemo />
245          <p>DNT</p>
246          <DntDemo />
247          <p>FB</p>
248          <FbDemo />
249          <p>fos</p>
250          <FosDemo />
251          <p>fr</p>
252          <FrDemo />
253          <p>H</p>
254          <HDemo />
255          <p>IDB</p>
256          <IdbDemo />
257          <p>JSF</p>
258          <JsfDemo />
259          <p>L</p>
260          <LDemo />
261          <p>LS</p>
262          <LsDemo />
263          <p>ODB</p>
264          <OdbDemo />
265          <p>P</p>
266          <PDemo />
267          <p>PK</p>
268          <PkDemo />
269          <p>PR</p>
270          <PrDemo />
271          <p>S</p>
272          <SDemo />
273          <p>SS</p>
274          <SsDemo />
275          <p>SWF</p>
276          <SwfDemo />
277          <p>T</p>
278          <TDemo />
279          <p>TO</p>
280          <ToDemo />
281        </section>
282        <section>
283          <h2>jsbd</h2>
284          <JsbdDemo />
285        </section>
286        <section>
287          <h2>n</h2>
288          <NDemo />
289        </section>
290      </main>
291    );
292  };
293  
294  export default DocumentationView;