From 72f06ba267a940e87dd067c176857a3c85d74ac09e1f3d751119286f26a6e482 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Thu, 15 May 2025 15:31:41 +0000 Subject: [PATCH] - Convert to pip-based build OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cfscrape?expand=0&rev=25 --- .gitattributes | 23 +++++++++ .gitignore | 1 + cloudflare-scrape-2.1.1.tar.gz | 3 ++ python-cfscrape.changes | 94 ++++++++++++++++++++++++++++++++++ python-cfscrape.spec | 81 +++++++++++++++++++++++++++++ 5 files changed, 202 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 cloudflare-scrape-2.1.1.tar.gz create mode 100644 python-cfscrape.changes create mode 100644 python-cfscrape.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/cloudflare-scrape-2.1.1.tar.gz b/cloudflare-scrape-2.1.1.tar.gz new file mode 100644 index 0000000..aee6aee --- /dev/null +++ b/cloudflare-scrape-2.1.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d8cf056b64b68d85b65a37a9b981398f35e301f6be3a38927b53b828a910f09 +size 326422 diff --git a/python-cfscrape.changes b/python-cfscrape.changes new file mode 100644 index 0000000..dd227b9 --- /dev/null +++ b/python-cfscrape.changes @@ -0,0 +1,94 @@ +------------------------------------------------------------------- +Thu May 15 13:07:04 UTC 2025 - Markéta Machová + +- Convert to pip-based build + +------------------------------------------------------------------- +Fri Feb 28 00:26:13 UTC 2020 - Martin Herkt <9+suse@cirno.systems> + +- Update to 2.1.1 + * Updated to handle latest Cloudflare IUAM challenge + +------------------------------------------------------------------- +Mon Aug 12 00:18:51 UTC 2019 - Martin Herkt <9+suse@cirno.systems> + +- Update to 2.0.8 + * Default SSL ciphers changed to resolve issues with some users + reporting receiving Cloudflare captchas + +------------------------------------------------------------------- +Mon Jun 3 14:10:41 UTC 2019 - Martin Herkt <9+suse@cirno.systems> + +- Update to 2.0.7 + * Enable HTTPS adapter by default + +------------------------------------------------------------------- +Wed May 15 11:06:15 UTC 2019 - Martin Herkt <9+suse@cirno.systems> + +- Switch to GitHub tarball, enable tests +- Update to 2.0.4 + * Detect captcha challenges, try harder to avoid them + +------------------------------------------------------------------- +Sat May 11 12:28:56 UTC 2019 - Martin Herkt <9+suse@cirno.systems> + +- Update to 2.0.3 + * Support latest Cloudflare IUAM challenge + +------------------------------------------------------------------- +Sat May 11 10:19:59 UTC 2019 - Martin Herkt <9+suse@cirno.systems> + +- Update to 2.0.0 + * Support latest Cloudflare IUAM challenge + +------------------------------------------------------------------- +Wed Mar 20 21:25:44 UTC 2019 - Martin Herkt <9+suse@cirno.systems> + +- Update to 1.9.7: + * A hidden input form has been added to the challenge; + fix to allow bypassing it + +------------------------------------------------------------------- +Thu Mar 14 14:55:30 UTC 2019 - Tomáš Chvátal + +- Update to 1.9.6: + * various readme updates + +------------------------------------------------------------------- +Tue Dec 4 12:46:37 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Thu Apr 5 03:59:57 UTC 2018 - 9+suse@cirno.systems + +- Update to 1.9.5 + * Parse updated IUAM Javascript challenge + +------------------------------------------------------------------- +Tue Feb 13 09:24:50 UTC 2018 - 9+suse@cirno.systems + +- Update to 1.9.4 + * Handle failed challenge submissions + * Remove dependency on PyExecJS + +------------------------------------------------------------------- +Wed Jan 31 19:29:58 UTC 2018 - 9+suse@cirno.systems + +- Update to 1.9.3 + * Add LICENSE and README.md to source distribution +- Remove Git LICENSE source +- Add README.md to doc files + +------------------------------------------------------------------- +Wed Jan 31 19:09:03 UTC 2018 - 9+suse@cirno.systems + +- Update to 1.9.2 + * Add __version__ to __init__.py +- Include LICENSE from Git tag for now (not part of PyPI package) + Reported upstream + +------------------------------------------------------------------- +Thu Jan 11 11:19:00 UTC 2018 - 9@cirno.systems + +- init, 1.9.1 diff --git a/python-cfscrape.spec b/python-cfscrape.spec new file mode 100644 index 0000000..a42c42f --- /dev/null +++ b/python-cfscrape.spec @@ -0,0 +1,81 @@ +# +# spec file for package python-cfscrape +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-cfscrape +Version: 2.1.1 +Release: 0 +Summary: Python module to bypass Cloudflare's anti-bot page +License: MIT +Group: Development/Languages/Python +URL: https://github.com/Anorov/cloudflare-scrape +Source: https://github.com/Anorov/cloudflare-scrape/archive/%{version}.tar.gz#/cloudflare-scrape-%{version}.tar.gz +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module requests} +BuildRequires: %{python_module responses} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module sure} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: nodejs +BuildRequires: python-rpm-macros +Requires: nodejs +Requires: python-requests +BuildArch: noarch +%python_subpackages + +%description +A simple Python module to bypass Cloudflare's anti-bot page (also known as "I'm +Under Attack Mode", or IUAM), implemented with Requests. + +This can be useful if you wish to scrape or crawl a website protected with +Cloudflare. Cloudflare's anti-bot page currently just checks if the client +supports Javascript, though they may add additional techniques in the future. + +Due to Cloudflare continually changing and hardening their protection page, +cfscrape requires Node.js to solve Javascript challenges. This allows the script +to easily impersonate a regular web browser without explicitly deobfuscating and +parsing Cloudflare's Javascript. + +Note: This only works when regular Cloudflare anti-bots is enabled (the +"Checking your browser before accessing..." loading page). If there is a +reCAPTCHA challenge, you're out of luck. Thankfully, the Javascript check page +is much more common. + +%prep +%setup -q -n cloudflare-scrape-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +# test suite requires internet access +# %%check +# %%python_exec setup.py develop --user +# %%python_exec -m pytest -v tests + +%files %{python_files} +%license LICENSE +%doc README.md +%{python_sitelib}/cfscrape +%{python_sitelib}/cfscrape-%{version}*-info + +%changelog