python-rucaptcha 6.3.1__tar.gz → 6.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/LICENSE +1 -1
  2. {python_rucaptcha-6.3.1/src/python_rucaptcha.egg-info → python_rucaptcha-6.4.0}/PKG-INFO +14 -13
  3. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/README.md +9 -7
  4. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/pyproject.toml +2 -4
  5. python_rucaptcha-6.4.0/src/python_rucaptcha/__version__.py +1 -0
  6. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/atb_captcha.py +1 -0
  7. python_rucaptcha-6.4.0/src/python_rucaptcha/captcha_fox.py +124 -0
  8. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/control.py +5 -0
  9. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/core/enums.py +9 -0
  10. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/datadome_captcha.py +2 -2
  11. python_rucaptcha-6.4.0/src/python_rucaptcha/prosopo.py +108 -0
  12. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/tencent.py +1 -0
  13. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0/src/python_rucaptcha.egg-info}/PKG-INFO +14 -13
  14. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha.egg-info/SOURCES.txt +2 -0
  15. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha.egg-info/requires.txt +1 -1
  16. python_rucaptcha-6.3.1/src/python_rucaptcha/__version__.py +0 -1
  17. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/MANIFEST.in +0 -0
  18. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/setup.cfg +0 -0
  19. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/__init__.py +0 -0
  20. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/amazon_waf.py +0 -0
  21. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/audio_captcha.py +0 -0
  22. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/bounding_box_captcha.py +0 -0
  23. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/capy_puzzle.py +0 -0
  24. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/coordinates_captcha.py +0 -0
  25. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/core/__init__.py +0 -0
  26. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/core/base.py +0 -0
  27. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/core/config.py +0 -0
  28. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/core/result_handler.py +0 -0
  29. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/core/serializer.py +0 -0
  30. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/cutcaptcha.py +0 -0
  31. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/cyber_siara_captcha.py +0 -0
  32. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/draw_around_captcha.py +0 -0
  33. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/friendly_captcha.py +0 -0
  34. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/fun_captcha.py +0 -0
  35. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/gee_test.py +0 -0
  36. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/grid_captcha.py +0 -0
  37. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/hcaptcha.py +0 -0
  38. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/image_captcha.py +0 -0
  39. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/key_captcha.py +0 -0
  40. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/lemin_captcha.py +0 -0
  41. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/mt_captcha.py +0 -0
  42. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/re_captcha.py +0 -0
  43. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/rotate_captcha.py +0 -0
  44. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/text_captcha.py +0 -0
  45. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha/turnstile.py +0 -0
  46. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha.egg-info/dependency_links.txt +0 -0
  47. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/src/python_rucaptcha.egg-info/top_level.txt +0 -0
  48. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_amazon.py +0 -0
  49. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_audio.py +0 -0
  50. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_bounding_box.py +0 -0
  51. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_capypuzzle.py +0 -0
  52. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_control.py +0 -0
  53. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_coordinates.py +0 -0
  54. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_core.py +0 -0
  55. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_cutcaptcha.py +0 -0
  56. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_cybersiara.py +0 -0
  57. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_datadome.py +0 -0
  58. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_draw_around.py +0 -0
  59. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_friendly_captcha.py +0 -0
  60. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_funcaptcha.py +0 -0
  61. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_geetest.py +0 -0
  62. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_grid.py +0 -0
  63. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_hcaptcha.py +0 -0
  64. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_image.py +0 -0
  65. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_key_captcha.py +0 -0
  66. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_lemin.py +0 -0
  67. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_mtcaptcha.py +0 -0
  68. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_recaptcha.py +0 -0
  69. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_rotate.py +0 -0
  70. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_tencent.py +0 -0
  71. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_text.py +0 -0
  72. {python_rucaptcha-6.3.1 → python_rucaptcha-6.4.0}/tests/test_turnstile.py +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Andrei
3
+ Copyright (c) 2025 Andrei
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,17 +1,15 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-rucaptcha
3
- Version: 6.3.1
3
+ Version: 6.4.0
4
4
  Summary: Python 3.9+ RuCaptcha library with AIO module.
5
5
  Author-email: AndreiDrang <python-captcha@pm.me>
6
- License: MIT License
6
+ License-Expression: MIT
7
7
  Project-URL: Homepage, https://andreidrang.github.io/python-rucaptcha/
8
8
  Project-URL: Documentation, https://andreidrang.github.io/python-rucaptcha/
9
9
  Project-URL: Repository, https://github.com/AndreiDrang/python-rucaptcha
10
10
  Project-URL: Issues, https://github.com/AndreiDrang/python-rucaptcha/issues
11
11
  Project-URL: Changelog, https://github.com/AndreiDrang/python-rucaptcha/releases
12
12
  Keywords: captcha,rucaptcha,2captcha,deathbycaptcha,recaptcha,geetest,hcaptcha,capypuzzle,rotatecaptcha,funcaptcha,keycaptcha,python3,recaptcha,captcha,security,tencent,atb_captcha,python-library,python-rucaptcha,rucaptcha-client,yandex,turnstile,amazon,amazon_waf,friendly-captcha
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
15
13
  Classifier: Development Status :: 5 - Production/Stable
16
14
  Classifier: Programming Language :: Python
17
15
  Classifier: Programming Language :: Python :: 3
@@ -29,8 +27,9 @@ Description-Content-Type: text/markdown
29
27
  License-File: LICENSE
30
28
  Requires-Dist: requests>=2.21.0
31
29
  Requires-Dist: aiohttp>=3.9.2
32
- Requires-Dist: msgspec==0.18.*
30
+ Requires-Dist: msgspec<0.20,>=0.18
33
31
  Requires-Dist: tenacity<10,>=8
32
+ Dynamic: license-file
34
33
 
35
34
  # python-rucaptcha
36
35
 
@@ -45,6 +44,7 @@ Requires-Dist: tenacity<10,>=8
45
44
  [![PyPI version](https://badge.fury.io/py/python-rucaptcha.svg)](https://badge.fury.io/py/python-rucaptcha)
46
45
  [![Python versions](https://img.shields.io/pypi/pyversions/python-rucaptcha.svg?logo=python&logoColor=FBE072)](https://badge.fury.io/py/python-rucaptcha)
47
46
  [![Downloads](https://static.pepy.tech/badge/python-rucaptcha/month)](https://pepy.tech/project/python-rucaptcha)
47
+ [![Static Badge](https://img.shields.io/badge/docs-Sphinx-green?label=Documentation&labelColor=gray)](https://andreidrang.github.io/python-rucaptcha/)
48
48
 
49
49
  [![Maintainability](https://api.codeclimate.com/v1/badges/aec93bb04a277cf0dde9/maintainability)](https://codeclimate.com/github/AndreiDrang/python-rucaptcha/maintainability)
50
50
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b4087362bd024b088b358b3e10e7a62f)](https://www.codacy.com/gh/AndreiDrang/python-rucaptcha/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=AndreiDrang/python-rucaptcha&amp;utm_campaign=Badge_Grade)
@@ -56,21 +56,16 @@ Requires-Dist: tenacity<10,>=8
56
56
  [![Tests](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/test.yml)
57
57
  [![Lint](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/lint.yml/badge.svg?branch=master)](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/lint.yml)
58
58
 
59
- Python3 library for [RuCaptcha](https://rucaptcha.com/) and [2Captcha](https://2captcha.com/) service API.
59
+ Python3 library for [RuCaptcha](https://rucaptcha.com/?from=4170435) and [2Captcha](https://2captcha.com/?from=4170435) service API.
60
60
 
61
61
  Tested on UNIX based OS.
62
62
 
63
- The library is intended for software developers and is used to work with the [RuCaptcha](https://rucaptcha.com/) and [2Captcha](https://2captcha.com/) service API.
63
+ The library is intended for software developers and is used to work with the [RuCaptcha](https://rucaptcha.com/?from=4170435) and [2Captcha](https://2captcha.com/?from=4170435) service API.
64
64
 
65
65
  Support of the service [Death By Captcha](https://deathbycaptcha.com?refid=1237267242) is integrated into this library, more information in the library documentation or in the [service docs](https://deathbycaptcha.com/api/2captcha?refid=1237267242).
66
- ***
67
66
 
68
67
  Application in [RuCaptcha software](https://rucaptcha.com/software/python-rucaptcha) and [2Captcha software](https://2captcha.com/software/python-rucaptcha).
69
68
 
70
- If you have any questions, please send a message to the [Telegram](https://t.me/pythoncaptcha) chat room.
71
-
72
- Or email python-captcha@pm.me
73
-
74
69
  ## How to install?
75
70
 
76
71
  ### pip
@@ -104,3 +99,9 @@ For full changelog info check - [Releases page](https://github.com/AndreiDrang/p
104
99
  ### Get API Key to work with the library
105
100
  1. On the page - https://rucaptcha.com/enterpage
106
101
  2. Find it: [![img.png](https://s.vyjava.xyz/files/2024/12-December/17/ac679557/img.png)](https://vyjava.xyz/dashboard/image/ac679557-f3cc-402f-bf95-6c45d252a2ef)
102
+
103
+ ### Contacts
104
+
105
+ If you have any questions, please send a message to the [Telegram](https://t.me/pythoncaptcha) chat room.
106
+
107
+ Or email python-captcha@pm.me
@@ -11,6 +11,7 @@
11
11
  [![PyPI version](https://badge.fury.io/py/python-rucaptcha.svg)](https://badge.fury.io/py/python-rucaptcha)
12
12
  [![Python versions](https://img.shields.io/pypi/pyversions/python-rucaptcha.svg?logo=python&logoColor=FBE072)](https://badge.fury.io/py/python-rucaptcha)
13
13
  [![Downloads](https://static.pepy.tech/badge/python-rucaptcha/month)](https://pepy.tech/project/python-rucaptcha)
14
+ [![Static Badge](https://img.shields.io/badge/docs-Sphinx-green?label=Documentation&labelColor=gray)](https://andreidrang.github.io/python-rucaptcha/)
14
15
 
15
16
  [![Maintainability](https://api.codeclimate.com/v1/badges/aec93bb04a277cf0dde9/maintainability)](https://codeclimate.com/github/AndreiDrang/python-rucaptcha/maintainability)
16
17
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b4087362bd024b088b358b3e10e7a62f)](https://www.codacy.com/gh/AndreiDrang/python-rucaptcha/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=AndreiDrang/python-rucaptcha&amp;utm_campaign=Badge_Grade)
@@ -22,21 +23,16 @@
22
23
  [![Tests](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/test.yml)
23
24
  [![Lint](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/lint.yml/badge.svg?branch=master)](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/lint.yml)
24
25
 
25
- Python3 library for [RuCaptcha](https://rucaptcha.com/) and [2Captcha](https://2captcha.com/) service API.
26
+ Python3 library for [RuCaptcha](https://rucaptcha.com/?from=4170435) and [2Captcha](https://2captcha.com/?from=4170435) service API.
26
27
 
27
28
  Tested on UNIX based OS.
28
29
 
29
- The library is intended for software developers and is used to work with the [RuCaptcha](https://rucaptcha.com/) and [2Captcha](https://2captcha.com/) service API.
30
+ The library is intended for software developers and is used to work with the [RuCaptcha](https://rucaptcha.com/?from=4170435) and [2Captcha](https://2captcha.com/?from=4170435) service API.
30
31
 
31
32
  Support of the service [Death By Captcha](https://deathbycaptcha.com?refid=1237267242) is integrated into this library, more information in the library documentation or in the [service docs](https://deathbycaptcha.com/api/2captcha?refid=1237267242).
32
- ***
33
33
 
34
34
  Application in [RuCaptcha software](https://rucaptcha.com/software/python-rucaptcha) and [2Captcha software](https://2captcha.com/software/python-rucaptcha).
35
35
 
36
- If you have any questions, please send a message to the [Telegram](https://t.me/pythoncaptcha) chat room.
37
-
38
- Or email python-captcha@pm.me
39
-
40
36
  ## How to install?
41
37
 
42
38
  ### pip
@@ -70,3 +66,9 @@ For full changelog info check - [Releases page](https://github.com/AndreiDrang/p
70
66
  ### Get API Key to work with the library
71
67
  1. On the page - https://rucaptcha.com/enterpage
72
68
  2. Find it: [![img.png](https://s.vyjava.xyz/files/2024/12-December/17/ac679557/img.png)](https://vyjava.xyz/dashboard/image/ac679557-f3cc-402f-bf95-6c45d252a2ef)
69
+
70
+ ### Contacts
71
+
72
+ If you have any questions, please send a message to the [Telegram](https://t.me/pythoncaptcha) chat room.
73
+
74
+ Or email python-captcha@pm.me
@@ -68,10 +68,8 @@ keywords = [ "captcha",
68
68
  "amazon_waf",
69
69
  "friendly-captcha"
70
70
  ]
71
- license = {text = "MIT License"}
71
+ license = "MIT"
72
72
  classifiers = [
73
- "License :: OSI Approved :: MIT License",
74
- "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
75
73
  "Development Status :: 5 - Production/Stable",
76
74
  "Programming Language :: Python",
77
75
  "Programming Language :: Python :: 3",
@@ -88,7 +86,7 @@ classifiers = [
88
86
  dependencies = [
89
87
  "requests>=2.21.0",
90
88
  "aiohttp>=3.9.2",
91
- "msgspec==0.18.*",
89
+ "msgspec>=0.18,<0.20",
92
90
  "tenacity>=8,<10"
93
91
  ]
94
92
 
@@ -0,0 +1 @@
1
+ __version__ = "6.4.0"
@@ -71,6 +71,7 @@ class atbCaptcha(BaseCaptcha):
71
71
 
72
72
  Notes:
73
73
  https://rucaptcha.com/api-docs/atb-captcha
74
+
74
75
  https://2captcha.com/api-docs/atb-captcha
75
76
  """
76
77
  super().__init__(method=method, *args, **kwargs)
@@ -0,0 +1,124 @@
1
+ from .core.base import BaseCaptcha
2
+ from .core.enums import CaptchaFoxEnm
3
+
4
+
5
+ class CaptchaFox(BaseCaptcha):
6
+ def __init__(
7
+ self,
8
+ websiteURL: str,
9
+ websiteKey: str,
10
+ userAgent: str,
11
+ proxyType: str,
12
+ proxyAddress: str,
13
+ proxyPort: str,
14
+ *args,
15
+ **kwargs,
16
+ ):
17
+ """
18
+ The class is used to work with CaptchaFox.
19
+
20
+ Args:
21
+ rucaptcha_key: User API key
22
+ websiteURL: Full URL of the captcha page
23
+ websiteKey: The value of the `key` parameter.
24
+ It can be found in the page source code or captured in network requests during page loading.
25
+ userAgent: User-Agent of your browser will be used to load the captcha.
26
+ Use only modern browser's User-Agents
27
+ proxyType: Proxy type - `http`, `socks4`, `socks5`
28
+ proxyAddress: Proxy IP address or hostname
29
+ proxyPort: Proxy port
30
+ method: Captcha type
31
+ kwargs: Not required params for task creation request
32
+
33
+ Examples:
34
+ >>> CaptchaFox(rucaptcha_key="aa9011f31111181111168611f1151122",
35
+ ... websiteURL="3ceb8624-1970-4e6b-91d5-70317b70b651",
36
+ ... websiteKey="sk_xtNxpk6fCdFbxh1_xJeGflSdCE9tn99G",
37
+ ... userAgent="Mozilla/5.0 .....",
38
+ ... proxyType="socks5",
39
+ ... proxyAddress="1.2.3.4",
40
+ ... proxyPort="445",
41
+ ... ).captcha_handler()
42
+ {
43
+ "errorId":0,
44
+ "status":"ready",
45
+ "solution":{
46
+ "token":"142000f.....er"
47
+ },
48
+ "cost":"0.002",
49
+ "ip":"1.2.3.4",
50
+ "createTime":1692863536,
51
+ "endTime":1692863556,
52
+ "solveCount":0,
53
+ "taskId": 73243152973,
54
+ }
55
+
56
+ >>> await CaptchaFox(rucaptcha_key="aa9011f31111181111168611f1151122",
57
+ ... websiteURL="3ceb8624-1970-4e6b-91d5-70317b70b651",
58
+ ... websiteKey="sk_xtNxpk6fCdFbxh1_xJeGflSdCE9tn99G",
59
+ ... userAgent="Mozilla/5.0 .....",
60
+ ... proxyType="socks5",
61
+ ... proxyAddress="1.2.3.4",
62
+ ... proxyPort="445",
63
+ ... ).aio_captcha_handler()
64
+ {
65
+ "errorId":0,
66
+ "status":"ready",
67
+ "solution":{
68
+ "token":"142000f.....er"
69
+ },
70
+ "cost":"0.002",
71
+ "ip":"1.2.3.4",
72
+ "createTime":1692863536,
73
+ "endTime":1692863556,
74
+ "solveCount":0,
75
+ "taskId": 73243152973,
76
+ }
77
+
78
+ Returns:
79
+ Dict with full server response
80
+
81
+ Notes:
82
+ https://2captcha.com/api-docs/captchafox
83
+
84
+ https://rucaptcha.com/api-docs/captchafox
85
+ """
86
+ super().__init__(method=CaptchaFoxEnm.CaptchaFoxTask, *args, **kwargs)
87
+
88
+ self.create_task_payload["task"].update(
89
+ {
90
+ "websiteURL": websiteURL,
91
+ "websiteKey": websiteKey,
92
+ "userAgent": userAgent,
93
+ "proxyType": proxyType,
94
+ "proxyAddress": proxyAddress,
95
+ "proxyPort": proxyPort,
96
+ }
97
+ )
98
+
99
+ def captcha_handler(self, **kwargs) -> dict:
100
+ """
101
+ Sync solving method
102
+
103
+ Args:
104
+ kwargs: additional params for `requests` library
105
+
106
+ Returns:
107
+ Dict with full server response
108
+
109
+ Notes:
110
+ Check class docstirng for more info
111
+ """
112
+ return self._processing_response(**kwargs)
113
+
114
+ async def aio_captcha_handler(self) -> dict:
115
+ """
116
+ Async solving method
117
+
118
+ Returns:
119
+ Dict with full server response
120
+
121
+ Notes:
122
+ Check class docstirng for more info
123
+ """
124
+ return await self._aio_processing_response()
@@ -55,10 +55,15 @@ class Control(BaseCaptcha):
55
55
 
56
56
  Notes:
57
57
  https://rucaptcha.com/api-docs/get-balance
58
+
58
59
  https://rucaptcha.com/api-docs/report-correct
60
+
59
61
  https://rucaptcha.com/api-docs/report-incorrect
62
+
60
63
  https://2captcha.com/api-docs/get-balance
64
+
61
65
  https://2captcha.com/api-docs/report-correct
66
+
62
67
  https://2captcha.com/api-docs/report-incorrect
63
68
  """
64
69
 
@@ -159,3 +159,12 @@ class TencentEnm(str, MyEnum):
159
159
  class atbCaptchaEnm(str, MyEnum):
160
160
  AtbCaptchaTask = "AtbCaptchaTask"
161
161
  AtbCaptchaTaskProxyless = "AtbCaptchaTaskProxyless"
162
+
163
+
164
+ class ProsopoEnm(str, MyEnum):
165
+ ProsopoTask = "ProsopoTask"
166
+ ProsopoTaskProxyless = "ProsopoTaskProxyless "
167
+
168
+
169
+ class CaptchaFoxEnm(str, MyEnum):
170
+ CaptchaFoxTask = "CaptchaFoxTask"
@@ -34,7 +34,7 @@ class DataDomeCaptcha(BaseCaptcha):
34
34
  >>> DataDomeCaptcha(rucaptcha_key="aa9011f31111181111168611f1151122",
35
35
  ... websiteURL="3ceb8624-1970-4e6b-91d5-70317b70b651",
36
36
  ... captchaUrl="https://rucaptcha.com/demo/hcaptcha",
37
- ... userAgent="https://rucaptcha.com/demo/hcaptcha",
37
+ ... userAgent="Mozilla/5.0 .....",
38
38
  ... proxyType="socks5",
39
39
  ... proxyAddress="1.2.3.4",
40
40
  ... proxyPort="445",
@@ -56,7 +56,7 @@ class DataDomeCaptcha(BaseCaptcha):
56
56
  >>> await DataDomeCaptcha(rucaptcha_key="aa9011f31111181111168611f1151122",
57
57
  ... websiteURL="3ceb8624-1970-4e6b-91d5-70317b70b651",
58
58
  ... captchaUrl="https://rucaptcha.com/demo/hcaptcha",
59
- ... userAgent="https://rucaptcha.com/demo/hcaptcha",
59
+ ... userAgent="Mozilla/5.0 .....",
60
60
  ... proxyType="socks5",
61
61
  ... proxyAddress="1.2.3.4",
62
62
  ... proxyPort="445",
@@ -0,0 +1,108 @@
1
+ from typing import Union
2
+
3
+ from .core.base import BaseCaptcha
4
+ from .core.enums import ProsopoEnm
5
+
6
+
7
+ class Prosopo(BaseCaptcha):
8
+ def __init__(
9
+ self,
10
+ websiteURL: str,
11
+ websiteKey: str,
12
+ method: Union[str, ProsopoEnm] = ProsopoEnm.ProsopoTaskProxyless,
13
+ *args,
14
+ **kwargs,
15
+ ):
16
+ """
17
+ The class is used to work with Prosopo.
18
+
19
+ Args:
20
+ rucaptcha_key: User API key
21
+ websiteURL: The full URL of target web page where the captcha is loaded.
22
+ We do not open the page, not a problem if it is available
23
+ only for authenticated users
24
+ websiteKey: The value of `siteKey` parameter found on the page.
25
+ method: Captcha type
26
+
27
+ Examples:
28
+ >>> Prosopo(rucaptcha_key="aa9011f31111181111168611f1151122",
29
+ ... websiteURL="https://www.example.com/",
30
+ ... websiteKey="5EPQoMZEDc5LpN7gtxMMzYPTzA6UeWqL2stk1rso9gy4Ahqt",
31
+ ... method=ProsopoEnm.ProsopoTaskProxyless.value,
32
+ ... ).captcha_handler()
33
+ {
34
+ "errorId":0,
35
+ "status":"ready",
36
+ "solution":{
37
+ "token": "0x00016c68747470733950547a4136",
38
+ },
39
+ "cost":"0.00299",
40
+ "ip":"1.2.3.4",
41
+ "createTime":1692863536,
42
+ "endTime":1692863556,
43
+ "solveCount":1,
44
+ "taskId":75190409731
45
+ }
46
+
47
+ >>> await Prosopo(rucaptcha_key="aa9011f31111181111168611f1151122",
48
+ ... websiteURL="https://www.example.com/",
49
+ ... websiteKey="5EPQoMZEDc5LpN7gtxMMzYPTzA6UeWqL2stk1rso9gy4Ahqt",
50
+ ... method=ProsopoEnm.ProsopoTaskProxyless.value,
51
+ ... ).aio_captcha_handler()
52
+ {
53
+ "errorId":0,
54
+ "status":"ready",
55
+ "solution":{
56
+ "token": "0x00016c68747470733950547a4136",
57
+ },
58
+ "cost":"0.00299",
59
+ "ip":"1.2.3.4",
60
+ "createTime":1692863536,
61
+ "endTime":1692863556,
62
+ "solveCount":1,
63
+ "taskId":75190409731
64
+ }
65
+
66
+ Returns:
67
+ Dict with full server response
68
+
69
+ Notes:
70
+ https://rucaptcha.com/api-docs/prosopo-procaptcha
71
+
72
+ https://rucaptcha.com/api-docs/prosopo-procaptcha
73
+ """
74
+ super().__init__(method=method, *args, **kwargs)
75
+
76
+ self.create_task_payload["task"].update({"websiteURL": websiteURL, "websiteKey": websiteKey})
77
+
78
+ # check user params
79
+ if method not in ProsopoEnm.list_values():
80
+ raise ValueError(f"Invalid method parameter set, available - {ProsopoEnm.list_values()}")
81
+
82
+ def captcha_handler(self, **kwargs) -> dict:
83
+ """
84
+ Sync solving method
85
+
86
+ Args:
87
+ kwargs: additional params for `requests` library
88
+
89
+ Returns:
90
+ Dict with full server response
91
+
92
+ Notes:
93
+ Check class docstirng for more info
94
+ """
95
+
96
+ return self._processing_response(**kwargs)
97
+
98
+ async def aio_captcha_handler(self) -> dict:
99
+ """
100
+ Async solving method
101
+
102
+ Returns:
103
+ Dict with full server response
104
+
105
+ Notes:
106
+ Check class docstirng for more info
107
+ """
108
+ return await self._aio_processing_response()
@@ -74,6 +74,7 @@ class Tencent(BaseCaptcha):
74
74
 
75
75
  Notes:
76
76
  https://rucaptcha.com/api-docs/tencent
77
+
77
78
  https://2captcha.com/api-docs/tencent
78
79
  """
79
80
  super().__init__(method=method, *args, **kwargs)
@@ -1,17 +1,15 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-rucaptcha
3
- Version: 6.3.1
3
+ Version: 6.4.0
4
4
  Summary: Python 3.9+ RuCaptcha library with AIO module.
5
5
  Author-email: AndreiDrang <python-captcha@pm.me>
6
- License: MIT License
6
+ License-Expression: MIT
7
7
  Project-URL: Homepage, https://andreidrang.github.io/python-rucaptcha/
8
8
  Project-URL: Documentation, https://andreidrang.github.io/python-rucaptcha/
9
9
  Project-URL: Repository, https://github.com/AndreiDrang/python-rucaptcha
10
10
  Project-URL: Issues, https://github.com/AndreiDrang/python-rucaptcha/issues
11
11
  Project-URL: Changelog, https://github.com/AndreiDrang/python-rucaptcha/releases
12
12
  Keywords: captcha,rucaptcha,2captcha,deathbycaptcha,recaptcha,geetest,hcaptcha,capypuzzle,rotatecaptcha,funcaptcha,keycaptcha,python3,recaptcha,captcha,security,tencent,atb_captcha,python-library,python-rucaptcha,rucaptcha-client,yandex,turnstile,amazon,amazon_waf,friendly-captcha
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
15
13
  Classifier: Development Status :: 5 - Production/Stable
16
14
  Classifier: Programming Language :: Python
17
15
  Classifier: Programming Language :: Python :: 3
@@ -29,8 +27,9 @@ Description-Content-Type: text/markdown
29
27
  License-File: LICENSE
30
28
  Requires-Dist: requests>=2.21.0
31
29
  Requires-Dist: aiohttp>=3.9.2
32
- Requires-Dist: msgspec==0.18.*
30
+ Requires-Dist: msgspec<0.20,>=0.18
33
31
  Requires-Dist: tenacity<10,>=8
32
+ Dynamic: license-file
34
33
 
35
34
  # python-rucaptcha
36
35
 
@@ -45,6 +44,7 @@ Requires-Dist: tenacity<10,>=8
45
44
  [![PyPI version](https://badge.fury.io/py/python-rucaptcha.svg)](https://badge.fury.io/py/python-rucaptcha)
46
45
  [![Python versions](https://img.shields.io/pypi/pyversions/python-rucaptcha.svg?logo=python&logoColor=FBE072)](https://badge.fury.io/py/python-rucaptcha)
47
46
  [![Downloads](https://static.pepy.tech/badge/python-rucaptcha/month)](https://pepy.tech/project/python-rucaptcha)
47
+ [![Static Badge](https://img.shields.io/badge/docs-Sphinx-green?label=Documentation&labelColor=gray)](https://andreidrang.github.io/python-rucaptcha/)
48
48
 
49
49
  [![Maintainability](https://api.codeclimate.com/v1/badges/aec93bb04a277cf0dde9/maintainability)](https://codeclimate.com/github/AndreiDrang/python-rucaptcha/maintainability)
50
50
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b4087362bd024b088b358b3e10e7a62f)](https://www.codacy.com/gh/AndreiDrang/python-rucaptcha/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=AndreiDrang/python-rucaptcha&amp;utm_campaign=Badge_Grade)
@@ -56,21 +56,16 @@ Requires-Dist: tenacity<10,>=8
56
56
  [![Tests](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/test.yml)
57
57
  [![Lint](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/lint.yml/badge.svg?branch=master)](https://github.com/AndreiDrang/python-rucaptcha/actions/workflows/lint.yml)
58
58
 
59
- Python3 library for [RuCaptcha](https://rucaptcha.com/) and [2Captcha](https://2captcha.com/) service API.
59
+ Python3 library for [RuCaptcha](https://rucaptcha.com/?from=4170435) and [2Captcha](https://2captcha.com/?from=4170435) service API.
60
60
 
61
61
  Tested on UNIX based OS.
62
62
 
63
- The library is intended for software developers and is used to work with the [RuCaptcha](https://rucaptcha.com/) and [2Captcha](https://2captcha.com/) service API.
63
+ The library is intended for software developers and is used to work with the [RuCaptcha](https://rucaptcha.com/?from=4170435) and [2Captcha](https://2captcha.com/?from=4170435) service API.
64
64
 
65
65
  Support of the service [Death By Captcha](https://deathbycaptcha.com?refid=1237267242) is integrated into this library, more information in the library documentation or in the [service docs](https://deathbycaptcha.com/api/2captcha?refid=1237267242).
66
- ***
67
66
 
68
67
  Application in [RuCaptcha software](https://rucaptcha.com/software/python-rucaptcha) and [2Captcha software](https://2captcha.com/software/python-rucaptcha).
69
68
 
70
- If you have any questions, please send a message to the [Telegram](https://t.me/pythoncaptcha) chat room.
71
-
72
- Or email python-captcha@pm.me
73
-
74
69
  ## How to install?
75
70
 
76
71
  ### pip
@@ -104,3 +99,9 @@ For full changelog info check - [Releases page](https://github.com/AndreiDrang/p
104
99
  ### Get API Key to work with the library
105
100
  1. On the page - https://rucaptcha.com/enterpage
106
101
  2. Find it: [![img.png](https://s.vyjava.xyz/files/2024/12-December/17/ac679557/img.png)](https://vyjava.xyz/dashboard/image/ac679557-f3cc-402f-bf95-6c45d252a2ef)
102
+
103
+ ### Contacts
104
+
105
+ If you have any questions, please send a message to the [Telegram](https://t.me/pythoncaptcha) chat room.
106
+
107
+ Or email python-captcha@pm.me
@@ -8,6 +8,7 @@ src/python_rucaptcha/amazon_waf.py
8
8
  src/python_rucaptcha/atb_captcha.py
9
9
  src/python_rucaptcha/audio_captcha.py
10
10
  src/python_rucaptcha/bounding_box_captcha.py
11
+ src/python_rucaptcha/captcha_fox.py
11
12
  src/python_rucaptcha/capy_puzzle.py
12
13
  src/python_rucaptcha/control.py
13
14
  src/python_rucaptcha/coordinates_captcha.py
@@ -24,6 +25,7 @@ src/python_rucaptcha/image_captcha.py
24
25
  src/python_rucaptcha/key_captcha.py
25
26
  src/python_rucaptcha/lemin_captcha.py
26
27
  src/python_rucaptcha/mt_captcha.py
28
+ src/python_rucaptcha/prosopo.py
27
29
  src/python_rucaptcha/re_captcha.py
28
30
  src/python_rucaptcha/rotate_captcha.py
29
31
  src/python_rucaptcha/tencent.py
@@ -1,4 +1,4 @@
1
1
  requests>=2.21.0
2
2
  aiohttp>=3.9.2
3
- msgspec==0.18.*
3
+ msgspec<0.20,>=0.18
4
4
  tenacity<10,>=8
@@ -1 +0,0 @@
1
- __version__ = "6.3.1"