| 9 | |
| 10 | |
| 11 | class Faker(AsyncObject): |
| 12 | locale: str = "" |
| 13 | language_code: str = "" |
| 14 | fingerprint: ChromeFingerprint |
| 15 | |
| 16 | async def __ainit__(self, botright, proxy): |
| 17 | """ |
| 18 | Initialize a Faker instance with a botright instance and a proxy, and generate fake data. |
| 19 | |
| 20 | Args: |
| 21 | botright: An instance of Botright for linking purposes. |
| 22 | proxy: The proxy to be used for generating locale-related fake data. |
| 23 | """ |
| 24 | self.botright = botright |
| 25 | link(self, botright) |
| 26 | |
| 27 | threads = [self.get_computer(), self.get_locale(proxy)] |
| 28 | await asyncio.gather(*threads) |
| 29 | |
| 30 | @staticmethod |
| 31 | def adjust_browser_version(useragent: str, browser_type: str, browser_version: str) -> str: |
| 32 | """ |
| 33 | Adjust the browser version in a user agent string. |
| 34 | |
| 35 | Args: |
| 36 | useragent (str): The user agent string to be adjusted. |
| 37 | browser_type (str): The type of the browser (e.g., "Firefox"). |
| 38 | browser_version (str): The desired browser version (e.g., "92.0"). |
| 39 | |
| 40 | Returns: |
| 41 | str: The adjusted user agent string. |
| 42 | """ |
| 43 | ua_browser_version = [word for word in useragent.split() if browser_type.capitalize() + "/" in word] |
| 44 | browser_version_list = browser_version.split(".")[:2] + ["0", "0"] |
| 45 | browser_version = ".".join(browser_version_list) |
| 46 | return useragent.replace(ua_browser_version[0], f"{browser_type}/{browser_version}") |
| 47 | |
| 48 | async def get_computer(self) -> None: |
| 49 | """ |
| 50 | Generate fake computer-related data such as user agent, vendor, GPU information, screen dimensions, etc. |
| 51 | """ |
| 52 | self.fingerprint = await self.botright.fingerprint_generator.get_fingerprint() |
| 53 | |
| 54 | async def get_locale(self, proxy: ProxyManager) -> None: |
| 55 | """ |
| 56 | Generate fake locale-related data such as locale and language code based on the provided proxy. |
| 57 | |
| 58 | Args: |
| 59 | proxy (ProxyManager): The proxy manager used to determine the locale. |
| 60 | """ |
| 61 | language_dict = { |
| 62 | "AF": ["pr-AF", "pr"], |
| 63 | "AX": ["sw-AX", "sw"], |
| 64 | "AL": ["sq-AL", "sq"], |
| 65 | "DZ": ["ar-DZ", "ar"], |
| 66 | "AS": ["en-AS", "en"], |
| 67 | "AD": ["ca-AD", "ca"], |
| 68 | "AO": ["po-AO", "po"], |