From 187dc26d02c13b1f68d9a02e7776728fc2cc3666 Mon Sep 17 00:00:00 2001 From: selfisekai Date: Mon, 14 Sep 2020 00:10:13 +0200 Subject: [PATCH] randomized user agents --- librefi/fxckers/_common.py | 3 +- librefi/utils.py | 60 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/librefi/fxckers/_common.py b/librefi/fxckers/_common.py index 03d6891..49cfcc3 100644 --- a/librefi/fxckers/_common.py +++ b/librefi/fxckers/_common.py @@ -7,6 +7,7 @@ from ..utils import get_user_agent class BaseFxcker: def __init__(self, logger, log_level): self.cookie_jar = CookieJar() + self.user_agent = get_user_agent() self.log = logger(key=self.FXCKER_KEY, log_level=log_level) @property @@ -18,7 +19,7 @@ class BaseFxcker: if not kwargs.get("headers"): kwargs["headers"] = {} if not kwargs["headers"].get("User-Agent"): - kwargs["headers"]["User-Agent"] = get_user_agent() + kwargs["headers"]["User-Agent"] = self.user_agent if not kwargs.get("allow_redirects"): kwargs["allow_redirects"] = False self.log.info("Requesting " + diff --git a/librefi/utils.py b/librefi/utils.py index ba3c73a..8355694 100644 --- a/librefi/utils.py +++ b/librefi/utils.py @@ -7,8 +7,64 @@ import random def get_user_agent(): - # TODO: randomize it - return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" + if bool(random.getrandbits(1)): + # Google Chrome + return ("Mozilla/5.0 ({platform}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{version} Safari/537.36" + ).format(platform=random.choice([ + "Windows NT 10.0; Win64; x64", + "Windows NT 10.0; WOW64", + "Windows NT 10.0", + ]), version=random.choice([ + # https://en.wikipedia.org/wiki/Google_Chrome_version_history + # https://bin.ptrcnull.me/uruyewogug.js + "64.0.3282", + "65.0.3325", + "66.0.3359", + "67.0.3396", + "68.0.3440", + "69.0.3497", + "70.0.3538", + "71.0.3578", + "72.0.3626", + "73.0.3683", + "74.0.3729", + "75.0.3770", + "76.0.3809", + "77.0.3865", + "78.0.3904", + "79.0.3945", + "80.0.3987", + "81.0.4044", + "83.0.4103", + "84.0.4147", + "85.0.4183", + "86.0.4240", + "87.0", + "87.0", + ])) + else: + # Mozilla Firefox + return ("Mozilla/5.0 ({platform}; rv:{version}) Gecko/20100101 Firefox/{version}" + ).format(platform=random.choice([ + "Windows NT 10.0; Win64; x64", + "Windows NT 10.0", + ]), version=random.choice([ + # https://www.mozilla.org/en-US/firefox/releases/ + # https://bin.ptrcnull.me/dijaboyewi.js + "80.0", + "79.0", + "78.0", + "77.0", + "76.0", + "75.0", + "74.0", + "73.0", + "72.0", + "71.0", + "70.0", + "69.0", + "68.0", + ])) def get_email_address():