2019-12-22 05:50:09 -07:00
|
|
|
"""
|
|
|
|
|
|
|
|
888 888 d8b
|
|
|
|
888 888 Y8P
|
|
|
|
888 888
|
|
|
|
.d8888b 88888b. 888d888 .d88b. 88888b.d88b. .d88b. .d88888 888d888 888 888 888 .d88b. 888d888
|
|
|
|
d88P" 888 "88b 888P" d88""88b 888 "888 "88b d8P Y8b d88" 888 888P" 888 888 888 d8P Y8b 888P"
|
|
|
|
888 888 888 888 888 888 888 888 888 88888888 888 888 888 888 Y88 88P 88888888 888
|
|
|
|
Y88b. 888 888 888 Y88..88P 888 888 888 Y8b. Y88b 888 888 888 Y8bd8P Y8b. 888
|
|
|
|
"Y8888P 888 888 888 "Y88P" 888 888 888 "Y8888 "Y88888 888 888 Y88P "Y8888 888 88888888
|
|
|
|
|
|
|
|
BY ULTRAFUNKAMSTERDAM (https://github.com/ultrafunkamsterdam)"""
|
|
|
|
|
|
|
|
from setuptools import setup
|
2021-05-01 14:49:59 -06:00
|
|
|
import os
|
|
|
|
import re
|
|
|
|
import codecs
|
|
|
|
|
|
|
|
|
|
|
|
dirname = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
|
|
with codecs.open(
|
|
|
|
os.path.join(dirname, "undetected_chromedriver", "__init__.py"),
|
|
|
|
mode="r",
|
|
|
|
encoding="latin1",
|
|
|
|
) as fp:
|
|
|
|
try:
|
|
|
|
version = re.findall(r"^__version__ = ['\"]([^'\"]*)['\"]", fp.read(), re.M)[0]
|
|
|
|
except Exception:
|
|
|
|
raise RuntimeError("unable to determine version")
|
2019-12-22 05:50:09 -07:00
|
|
|
|
|
|
|
|
|
|
|
setup(
|
2020-09-03 14:12:09 -06:00
|
|
|
name="undetected-chromedriver",
|
2021-05-01 14:49:59 -06:00
|
|
|
version=version,
|
2020-09-03 14:12:09 -06:00
|
|
|
packages=["undetected_chromedriver"],
|
2021-05-01 14:49:59 -06:00
|
|
|
install_requires=[
|
|
|
|
"selenium",
|
3.0.0 (#180)
*3.0.0
added lots of features and bugfixes
- You can now subscribe to Chrome Devtools Protocol Events like networking.
- splitted the project up in seperate modules now
- fixed locale (accept-language)
- you can enter your user-data-folder as property of
ChromeOptions() now.
- The ChromeOptions had a makeover, and i took the one from alpha 4,
people having troubles with mobile emulation and other bullshit,
can try again now.
- fixed the logic where sometimes options did not
respect the given values
- for headless (though still not supperted for undetectability),
added some real cool features which need to be set in
the options object):
defaults:
emulate_touch = True
mock_permissions = True # headless had notificationpermissions
setup in a distinguisable way.
mock_chrome_global = False
mock_canvas_fp = True # patch fingerprint
EXTENSIONS ARE NOT SUPPORTED BY CHROME IN HEADLESS MODE
YET. IF YOU WANT TO USE THEM, CREATE A PROFILE AND INSTALL
EXTENSIONS BY USING A REGULAR CHROME SESSION FIRST.
ALSO LOGIN TO GMAIL WHILE YOU'RE ON A GENUINE SESSION.
WHEN FINISHED, COPY THE USERDATA FOLDER OF CHROME TO SOME KNOWN
LOCATION (and make maye 2 copies?). BY HAVING GMAIL LOGGED IN
FIXES ALSO THE UNSAFE BROWSER MESSAGE FROM GOOGLE (AT LEAST FOR
ME IT WORKS)
* 2.2.2
* fixed a number of bugs
- specifying custom profile
- specifying custom binary path
- downloading, patching and storing now (if not explicity specified)
happens in a writable folder, instead of the current working dir.
Committer: UltrafunkAmsterdam <UltrafunkAmsterdam@github>
* tidy up
* uncomment block
* - support for specifying and reusing the user profile folder.
if a user-data-dir is specified, that folder will NOT be
deleted on exit.
example:
options.add_argument('--user-data-dir=c:\\temp')
- uses a platform specific app data folder to store driver instead
of the current workdir.
- impoved headless mode. fixed detection by notification perms.
- eliminates the "restore tabs" notification at startup
- added methods find_elements_by_text and find_element_by_text
- updated docs (partly)
-known issues:
- extensions not running. this is due to the inner workings
of chromedriver. still working on this.
- driver window is not always closing along with a program exit.
- MacOS: startup nag notifications. might be solved by
re(using) a profile directory.
- known stuff:
- some specific use cases, network conditions or behaviour
can cause being detected.
* Squashed commit of the following:
commit 7ce8e7a236cbee770cb117145d4bf6dc245b936a
Author: ultrafunkamsterdam <info@blackhat-security.nl>
Date: Fri Apr 30 18:22:39 2021 +0200
readme change
commit f214dcf33f26f8b35616d7b61cf6dee656596c3f
Author: ultrafunkamsterdam <info@blackhat-security.nl>
Date: Fri Apr 30 18:18:09 2021 +0200
- make sure options cannot be reused as it will
cause double and conflicting arguments to chrome
- support for specifying and reusing the user profile folder.
if a user-data-dir is specified, that folder will NOT be
deleted on exit.
example:
options.add_argument('--user-data-dir=c:\\temp')
- uses a platform specific app data folder to store driver instead
of the current workdir.
- impoved headless mode. fixed detection by notification perms.
- eliminates the "restore tabs" notification at startup
- added methods find_elements_by_text and find_element_by_text
- updated docs (partly)
-known issues:
- extensions not running. this is due to the inner workings
of chromedriver. still working on this.
- driver window is not always closing along with a program exit.
- MacOS: startup nag notifications. might be solved by
re(using) a profile directory.
- known stuff:
- some specific use cases, network conditions or behaviour
can cause being detected.
2021-05-24 02:26:02 -06:00
|
|
|
"requests",
|
|
|
|
"websockets",
|
2021-05-01 14:49:59 -06:00
|
|
|
],
|
2020-10-14 03:17:00 -06:00
|
|
|
url="https://github.com/ultrafunkamsterdam/undetected-chromedriver",
|
2020-09-03 14:12:09 -06:00
|
|
|
license="GPL-3.0",
|
|
|
|
author="UltrafunkAmsterdam",
|
|
|
|
author_email="info@blackhat-security.nl",
|
2021-01-17 09:36:54 -07:00
|
|
|
description="""\
|
2021-05-01 14:49:59 -06:00
|
|
|
selenium.webdriver.Chrome replacement wiht compatiblity for Brave, and other Chromium baed browsers.
|
|
|
|
not triggered by CloudFlare/Imperva/hCaptcha and such.
|
2021-01-17 09:36:54 -07:00
|
|
|
|
2021-01-16 22:11:11 -07:00
|
|
|
NOTE: results may vary due to many factors. No guarantees are given, except for ongoing efforts in understanding detection algorithms.
|
|
|
|
""",
|
2021-05-01 14:49:59 -06:00
|
|
|
long_description=open(os.path.join(dirname, "README.md")).read(),
|
2020-09-03 14:12:09 -06:00
|
|
|
long_description_content_type="text/markdown",
|
|
|
|
classifiers=[
|
|
|
|
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
|
|
"Programming Language :: Python :: 3",
|
|
|
|
"Programming Language :: Python :: 3.7",
|
2021-05-01 14:49:59 -06:00
|
|
|
"Programming Language :: Python :: 3.8",
|
|
|
|
"Programming Language :: Python :: 3.9",
|
|
|
|
"Programming Language :: Python :: 3.10",
|
2019-12-22 05:50:09 -07:00
|
|
|
],
|
|
|
|
)
|