{ "info": { "author": "Alexey", "author_email": "axbelenkov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# adspower\n\n[![Croco Logo](https://i.ibb.co/G5Pjt6M/logo.png)](https://t.me/crocofactory) \n\n[![PyPi Version](https://img.shields.io/pypi/v/adspower)](https://pypi.org/project/adspower/)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/adspower?label=downloads)](https://pypi.org/project/adspower/)\n[![License](https://img.shields.io/github/license/blnkoff/adspower.svg)](https://pypi.org/project/adspower/)\n[![Last Commit](https://img.shields.io/github/last-commit/blnkoff/adspower.svg)](https://pypi.org/project/adspower/)\n[![Development Status](https://img.shields.io/pypi/status/adspower)](https://pypi.org/project/adspower/) \n\n\nThe package for interacting with API of anti-detect browser [AdsPower](https://www.adspower.com).\n\n- **[Telegram channel](https://t.me/crocofactory)**\n- **[Overview](#quick-start)**\n- **[Installing](#installing-adspower)**\n- **[Bug reports](https://github.com/blnkoff/adspower/issues)**\n\nadspower's source code is made available under the [MIT License](LICENSE)\n \n## Features\n- Synchronous and asynchronous interaction with the local API\n- Interaction with the most popular libraries for browser automation in Python: Selenium and Playwright\n\n## Restrictions\n1. During using the package, AdsPower must be opened. \n2. The local API is available only in paid AdsPower subscriptions\n3. AdsPower has frequency control for all APIs, max. access frequency: 1 request/second \n\n\n## Quick start\n\n*Example of interacting with synchronous API.*\n\n```python\nfrom adspower.sync_api import Group, ProfileAPI\ngroup = Group.create(name='my_group', remark='The best group ever')\n\nprofile_api = ProfileAPI.create(group=group) \nprint(f'Profile {profile_api.name} was created in group {group.name}')\n```\n\n**Use `ProfileAPI` only when** you don't need `Selenium` and `Playwright` interactions.\n\nLibrary provides ways to interact the most popular libraries for browser automation in Python: `Selenium` and `Playwright`.\nTo get a browser, you can use `with` statement:\n\n- *Selenium*\n\n```python\nfrom adspower.sync_api.selenium import Profile, Group\nmy_group = Group.query(name='my_group')[0]\nprofile = Profile.create(group=my_group, name='my_profile')\n\nwith profile as browser:\n browser.get('https://github.com/blnkoff/adspower')\n```\n\n- *Playwright*\n\n```python\nfrom adspower.async_api.playwright import Profile, Group\n\nasync def main() -> None:\n my_group = (await Group.query(name='my_group'))[0]\n profile = await Profile.create(group=my_group, name='my_profile')\n \n async with profile as browser:\n page = browser.pages[0]\n await page.goto('https://github.com/blnkoff/adspower')\n```\n\nBoth versions support sync and async API.\n\nOr manually call `get_browser` if you need specify part of behaviour.\n```python\nfrom adspower.sync_api.selenium import Profile, Group\n\nmy_group = Group.query(name='my_group')[0]\nprofile = Profile.create(group=my_group, name='my_profile')\nbrowser = profile.get_browser(ip_tab=False, headless=True, disable_password_filling=True)\nbrowser.get('https://github.com/blnkoff/adspower')\nprofile.quit()\n```\n\nNotice that you must not call quitting methods of `Playwright` library or `Selenium` after `profile.quit()`, since \nit calls these methods automatically. An attempt to do so will lead to the error.\n \n*Example of setting proxy and fingerprint*\n\n```python\nfrom adspower.sync_api.playwright import Profile, Group\nfrom adspower import ProxyConfig, FingerprintConfig\n\nproxy = ProxyConfig(\n soft='other',\n type='http',\n host='xx.xx.x.xx',\n port=1000,\n user='username',\n password='password'\n)\n\nfingerprint = FingerprintConfig(\n ua='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.112 Safari/537.36'\n)\n\ngroup = Group.query(name='my_group')[0]\nprofile = Profile.create(group=group, proxy_config=proxy, name='my_profile', fingerprint_config=fingerprint)\n```\n\nThere are extension categories, implemented as `Category` class. At the moment, it can`t be created, but can be retrieved.\nYou can manually create extension category and used it for profile creation using API.\n \n*Example of querying category* \n\n```python\nfrom adspower.sync_api.playwright import Profile, Category, Group\n\ncategory = Category.query(name='my_category')[0]\ngroup = Group.query(name='my_group')[0]\n\nprofile = Profile.create(group=group, category=category)\n```\n\nYou can create anonymous profile that is deleted after last statement in context manager.\n \n*Example of anonymous profile*\n```python\nfrom adspower.async_api.playwright import Profile, Group\n\nasync def main() -> None:\n my_group = (await Group.query(name='my_group'))[0]\n profile = await Profile.anonymous(group=my_group)\n\n async with profile as browser:\n page = browser.pages[0]\n await page.goto('https://www.google.com')\n```\n\nEach API entity, such as Profile, Group and Category, pretty formatted, can be compared and converted to dict\n \n*Example 1*\n\n```python\nfrom adspower.sync_api.playwright import Category\n\ncategory = Category.query(name='my_category')[0]\nprint(category) \n```\n\n```markdown\nCategory(id=10515; name=my_category)\n```\n \n*Example 2*\n\n```python\nfrom adspower.sync_api.playwright import Profile, Group\n\ngroup = Group.query(name='my_group')[0]\nprofile_created = Profile.create(group=group)\n\nprofile_queried = Profile.query(id_=profile_created.id)\nprint(profile_queried == profile_created)\n```\n\n```python\nTrue\n```\n\n*Example 3*\n```python\nfrom adspower.sync_api.playwright import Category\n\ncategory = Category.query(name='my_category')[0]\nprint(category.to_dict())\n```\n\n```json\n{\n \"id\": 10515, \n \"name\": \"my_category\", \n \"remark\": \"category remark\"\n}\n```\n\n# Installing adspower\nTo install the package from PyPi you can use that:\n\n```sh\npip install adspower\n```\n\nYou will probably want to use the pacakge with `Selenium` or `Playwright`. You can install it as extra-package:\n\n```sh\npip install adspower[playwright]\n```\n\n```sh\npip install adspower[selenium]\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "dynamic": null, "home_page": "https://github.com/blnkoff/adspower", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "adspower", "package_url": "https://pypi.org/project/adspower/", "platform": null, "project_url": "https://pypi.org/project/adspower/", "project_urls": { "Homepage": "https://github.com/blnkoff/adspower", "Repository": "https://github.com/blnkoff/adspower" }, "provides_extra": null, "release_url": "https://pypi.org/project/adspower/2.0.3/", "requires_dist": [ "httpx<0.28.0,>=0.27.0", "playwright<2.0.0,>=1.42.0; extra == \"playwright\"", "selenium<5.0.0,>=4.16.0; extra == \"selenium\"" ], "requires_python": "<4.0,>=3.11", "summary": "The package for interacting with API of anti-detect browser AdsPower.", "version": "2.0.3", "yanked": false, "yanked_reason": null }, "last_serial": 24124255, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "blake2b_256": "7bcc7b904dcdf6f0c4251b1ace286db8117f9356a157698a92f45df9d92969c2", "md5": "3de8c917b9fd4684cf910b7acbf24303", "sha256": "e16140125c54b29cbebf1da75761745446eed17878ea0bd44c2f64657d124e36" }, "downloads": -1, "filename": "adspower-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3de8c917b9fd4684cf910b7acbf24303", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.11,<4.0", "size": 9089, "upload_time": "2023-12-13T16:02:14", "upload_time_iso_8601": "2023-12-13T16:02:14.916028Z", "url": "https://files.pythonhosted.org/packages/7b/cc/7b904dcdf6f0c4251b1ace286db8117f9356a157698a92f45df9d92969c2/adspower-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "baa7311bc530387c06542de2f1b261b683929e955b5d1fd74b666406f2d63c0e", "md5": "ebeec9520201ef09b404c4b2f849a7f7", "sha256": "eafe3fd6a97207c95bd6a209d93ea1e2e92b83a6ea90d9a5f2d500647e3d0622" }, "downloads": -1, "filename": "adspower-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ebeec9520201ef09b404c4b2f849a7f7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.11,<4.0", "size": 8386, "upload_time": "2023-12-13T16:02:16", "upload_time_iso_8601": "2023-12-13T16:02:16.941694Z", "url": "https://files.pythonhosted.org/packages/ba/a7/311bc530387c06542de2f1b261b683929e955b5d1fd74b666406f2d63c0e/adspower-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.0": [ { "comment_text": "", "digests": { "blake2b_256": "19888338d372091d59e7757e33be3bcec3141f75d2198a426ccdaeed3edcaceb", "md5": "bb6e8166d01be495bd241160fc60789e", "sha256": "cafca8bee43ca94c42a876bd7aed0fca9f82e53805dc3450800e5c399dc452b4" }, "downloads": -1, "filename": "adspower-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bb6e8166d01be495bd241160fc60789e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.11", "size": 36579, "upload_time": "2024-05-17T16:57:04", "upload_time_iso_8601": "2024-05-17T16:57:04.429282Z", "url": "https://files.pythonhosted.org/packages/19/88/8338d372091d59e7757e33be3bcec3141f75d2198a426ccdaeed3edcaceb/adspower-2.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "db4d45704017b461abcebdabdde6fb6541dd4fad63110225e60d2c83b7355ca2", "md5": "23fb98081412a901f2351173baa13f3d", "sha256": "c8ac3f42eced3d632d2ed169868ba3b97fc49b8ba95168f157531b422e6e0e8c" }, "downloads": -1, "filename": "adspower-2.0.0.tar.gz", "has_sig": false, "md5_digest": "23fb98081412a901f2351173baa13f3d", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.11", "size": 58379, "upload_time": "2024-05-17T16:57:06", "upload_time_iso_8601": "2024-05-17T16:57:06.748071Z", "url": "https://files.pythonhosted.org/packages/db/4d/45704017b461abcebdabdde6fb6541dd4fad63110225e60d2c83b7355ca2/adspower-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.1": [ { "comment_text": "", "digests": { "blake2b_256": "23585b324ae712bb8b2b4fd6a1b7d9724e6e8499b3d75261eedf437f53b59e2a", "md5": "9373d8dc221838ac10e7db6b4b1bac71", "sha256": "7fb7b1d739eca66ac470f9b9c7cf7de3d45f657e25a7cb20551aee12a2427013" }, "downloads": -1, "filename": "adspower-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9373d8dc221838ac10e7db6b4b1bac71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.11", "size": 36620, "upload_time": "2024-06-10T20:55:41", "upload_time_iso_8601": "2024-06-10T20:55:41.344443Z", "url": "https://files.pythonhosted.org/packages/23/58/5b324ae712bb8b2b4fd6a1b7d9724e6e8499b3d75261eedf437f53b59e2a/adspower-2.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "4dbe0325d62f37ded81fedb114164e36666f34328886555b641774e73b829684", "md5": "5b145c6fb1f1829a2176362df6425184", "sha256": "7364459b16e9ace7b07db24a1ccfebe80510ed69c3f84bc3fd21f4411329ad27" }, "downloads": -1, "filename": "adspower-2.0.1.tar.gz", "has_sig": false, "md5_digest": "5b145c6fb1f1829a2176362df6425184", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.11", "size": 59632, "upload_time": "2024-06-10T20:55:44", "upload_time_iso_8601": "2024-06-10T20:55:44.240426Z", "url": "https://files.pythonhosted.org/packages/4d/be/0325d62f37ded81fedb114164e36666f34328886555b641774e73b829684/adspower-2.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.2": [ { "comment_text": "", "digests": { "blake2b_256": "bf5a1f894a6f5d37bbc71df87631accbbdc75b327b296e0029b9078fc703c073", "md5": "9d89ac40acfab09ab6506cdc2910a3b4", "sha256": "014167d7f4e82dc26872fe492d6c1b4a059dbb846d2bfcdf710399b5c0976fc9" }, "downloads": -1, "filename": "adspower-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9d89ac40acfab09ab6506cdc2910a3b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.11", "size": 36645, "upload_time": "2024-06-10T22:29:15", "upload_time_iso_8601": "2024-06-10T22:29:15.328841Z", "url": "https://files.pythonhosted.org/packages/bf/5a/1f894a6f5d37bbc71df87631accbbdc75b327b296e0029b9078fc703c073/adspower-2.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "4720f6b6bf1becb91e8879fabbff6cad11e721eb5f82f433264fac7aa82af914", "md5": "99e8a87c5f6bb76136a1a57f451e9937", "sha256": "fdb4cc90dd5312f5ed87b8e7a3499dac66d2fd3678bf3466ed38bd0d1be5233d" }, "downloads": -1, "filename": "adspower-2.0.2.tar.gz", "has_sig": false, "md5_digest": "99e8a87c5f6bb76136a1a57f451e9937", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.11", "size": 59858, "upload_time": "2024-06-10T22:29:17", "upload_time_iso_8601": "2024-06-10T22:29:17.647173Z", "url": "https://files.pythonhosted.org/packages/47/20/f6b6bf1becb91e8879fabbff6cad11e721eb5f82f433264fac7aa82af914/adspower-2.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.3": [ { "comment_text": "", "digests": { "blake2b_256": "59faf512e220ccb45be51b87a0a25a5286fa0623d6106a4bc1406de11a41f509", "md5": "e5c9b65d6eb72d29f0595aafa4bfc42d", "sha256": "d0393db48dc5ca326c74d32983305118c2a28ef9180f23d334fffd2f01a7f3d2" }, "downloads": -1, "filename": "adspower-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e5c9b65d6eb72d29f0595aafa4bfc42d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.11", "size": 37089, "upload_time": "2024-07-14T13:22:02", "upload_time_iso_8601": "2024-07-14T13:22:02.999234Z", "url": "https://files.pythonhosted.org/packages/59/fa/f512e220ccb45be51b87a0a25a5286fa0623d6106a4bc1406de11a41f509/adspower-2.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "5c2297c176a5710d4517111f16a6347a14e9911c67b430fa91afa249d3d98201", "md5": "186dddb122bff0bd8db4c0a678b620b4", "sha256": "d348bdc84577cac35dfcf02ce606217ac6d708632334f4b267b8d3f94fc29cda" }, "downloads": -1, "filename": "adspower-2.0.3.tar.gz", "has_sig": false, "md5_digest": "186dddb122bff0bd8db4c0a678b620b4", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.11", "size": 60875, "upload_time": "2024-07-14T13:22:05", "upload_time_iso_8601": "2024-07-14T13:22:05.055905Z", "url": "https://files.pythonhosted.org/packages/5c/22/97c176a5710d4517111f16a6347a14e9911c67b430fa91afa249d3d98201/adspower-2.0.3.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "blake2b_256": "59faf512e220ccb45be51b87a0a25a5286fa0623d6106a4bc1406de11a41f509", "md5": "e5c9b65d6eb72d29f0595aafa4bfc42d", "sha256": "d0393db48dc5ca326c74d32983305118c2a28ef9180f23d334fffd2f01a7f3d2" }, "downloads": -1, "filename": "adspower-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e5c9b65d6eb72d29f0595aafa4bfc42d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.11", "size": 37089, "upload_time": "2024-07-14T13:22:02", "upload_time_iso_8601": "2024-07-14T13:22:02.999234Z", "url": "https://files.pythonhosted.org/packages/59/fa/f512e220ccb45be51b87a0a25a5286fa0623d6106a4bc1406de11a41f509/adspower-2.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "5c2297c176a5710d4517111f16a6347a14e9911c67b430fa91afa249d3d98201", "md5": "186dddb122bff0bd8db4c0a678b620b4", "sha256": "d348bdc84577cac35dfcf02ce606217ac6d708632334f4b267b8d3f94fc29cda" }, "downloads": -1, "filename": "adspower-2.0.3.tar.gz", "has_sig": false, "md5_digest": "186dddb122bff0bd8db4c0a678b620b4", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.11", "size": 60875, "upload_time": "2024-07-14T13:22:05", "upload_time_iso_8601": "2024-07-14T13:22:05.055905Z", "url": "https://files.pythonhosted.org/packages/5c/22/97c176a5710d4517111f16a6347a14e9911c67b430fa91afa249d3d98201/adspower-2.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }