# rebrowser-playwright
> ⚠️ This is the original [`playwright-python`](https://github.com/microsoft/playwright-python) patched with [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches).
>
> 🕵️ The ultimate goal is to pass all automation detection tests presented in [`rebrowser-bot-detector`](https://github.com/rebrowser/rebrowser-bot-detector).
>
> 🪄 It's designed to be a drop-in replacement for the original `playwright` without changing your codebase. Each major and minor version of this repo matches the original repo, patch version could differ due to changes related to the patch itself.
>
> ☝️ Make sure to read: [How to Access Main Context Objects from Isolated Context](https://rebrowser.net/blog/how-to-access-main-context-objects-from-isolated-context-in-puppeteer-and-playwright-23741)
>
> 🐛 Please report any issues in the [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches/issues) repo.
# 🎭 [Playwright](https://playwright.dev) for Python [![PyPI version](https://badge.fury.io/py/playwright.svg)](https://pypi.python.org/pypi/playwright/) [![Anaconda version](https://img.shields.io/conda/v/microsoft/playwright)](https://anaconda.org/Microsoft/playwright) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://aka.ms/playwright/discord)
Playwright is a Python library to automate [Chromium](https://www.chromium.org/Home), [Firefox](https://www.mozilla.org/en-US/firefox/new/) and [WebKit](https://webkit.org/) browsers with a single API. Playwright delivers automation that is **ever-green**, **capable**, **reliable** and **fast**. [See how Playwright is better](https://playwright.dev/python).
| | Linux | macOS | Windows |
| :--- | :---: | :---: | :---: |
| Chromium <!-- GEN:chromium-version -->130.0.6723.31<!-- GEN:stop --> | ✅ | ✅ | ✅ |
| WebKit <!-- GEN:webkit-version -->18.0<!-- GEN:stop --> | ✅ | ✅ | ✅ |
| Firefox <!-- GEN:firefox-version -->131.0<!-- GEN:stop --> | ✅ | ✅ | ✅ |
## Documentation
[https://playwright.dev/python/docs/intro](https://playwright.dev/python/docs/intro)
## API Reference
[https://playwright.dev/python/docs/api/class-playwright](https://playwright.dev/python/docs/api/class-playwright)
## Example
```py
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.new_page()
page.goto('http://playwright.dev')
page.screenshot(path=f'example-{browser_type.name}.png')
browser.close()
```
```py
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = await browser_type.launch()
page = await browser.new_page()
await page.goto('http://playwright.dev')
await page.screenshot(path=f'example-{browser_type.name}.png')
await browser.close()
asyncio.run(main())
```
## Other languages
More comfortable in another programming language? [Playwright](https://playwright.dev) is also available in
- [Node.js (JavaScript / TypeScript)](https://playwright.dev/docs/intro),
- [.NET](https://playwright.dev/dotnet/docs/intro),
- [Java](https://playwright.dev/java/docs/intro).
Raw data
{
"_id": null,
"home_page": "https://github.com/rebrowser/rebrowser-playwright-python",
"name": "rebrowser-playwright",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Microsoft Corporation",
"author_email": null,
"download_url": null,
"platform": null,
"description": "# rebrowser-playwright\n> \u26a0\ufe0f This is the original [`playwright-python`](https://github.com/microsoft/playwright-python) patched with [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches).\n>\n> \ud83d\udd75\ufe0f The ultimate goal is to pass all automation detection tests presented in [`rebrowser-bot-detector`](https://github.com/rebrowser/rebrowser-bot-detector).\n>\n> \ud83e\ude84 It's designed to be a drop-in replacement for the original `playwright` without changing your codebase. Each major and minor version of this repo matches the original repo, patch version could differ due to changes related to the patch itself.\n>\n> \u261d\ufe0f Make sure to read: [How to Access Main Context Objects from Isolated Context](https://rebrowser.net/blog/how-to-access-main-context-objects-from-isolated-context-in-puppeteer-and-playwright-23741)\n>\n> \ud83d\udc1b Please report any issues in the [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches/issues) repo.\n\n# \ud83c\udfad [Playwright](https://playwright.dev) for Python [![PyPI version](https://badge.fury.io/py/playwright.svg)](https://pypi.python.org/pypi/playwright/) [![Anaconda version](https://img.shields.io/conda/v/microsoft/playwright)](https://anaconda.org/Microsoft/playwright) [![Join Discord](https://img.shields.io/badge/join-discord-infomational)](https://aka.ms/playwright/discord)\n\nPlaywright is a Python library to automate [Chromium](https://www.chromium.org/Home), [Firefox](https://www.mozilla.org/en-US/firefox/new/) and [WebKit](https://webkit.org/) browsers with a single API. Playwright delivers automation that is **ever-green**, **capable**, **reliable** and **fast**. [See how Playwright is better](https://playwright.dev/python).\n\n| | Linux | macOS | Windows |\n| :--- | :---: | :---: | :---: |\n| Chromium <!-- GEN:chromium-version -->130.0.6723.31<!-- GEN:stop --> | \u2705 | \u2705 | \u2705 |\n| WebKit <!-- GEN:webkit-version -->18.0<!-- GEN:stop --> | \u2705 | \u2705 | \u2705 |\n| Firefox <!-- GEN:firefox-version -->131.0<!-- GEN:stop --> | \u2705 | \u2705 | \u2705 |\n\n## Documentation\n\n[https://playwright.dev/python/docs/intro](https://playwright.dev/python/docs/intro)\n\n## API Reference\n\n[https://playwright.dev/python/docs/api/class-playwright](https://playwright.dev/python/docs/api/class-playwright)\n\n## Example\n\n```py\nfrom playwright.sync_api import sync_playwright\n\nwith sync_playwright() as p:\n for browser_type in [p.chromium, p.firefox, p.webkit]:\n browser = browser_type.launch()\n page = browser.new_page()\n page.goto('http://playwright.dev')\n page.screenshot(path=f'example-{browser_type.name}.png')\n browser.close()\n```\n\n```py\nimport asyncio\nfrom playwright.async_api import async_playwright\n\nasync def main():\n async with async_playwright() as p:\n for browser_type in [p.chromium, p.firefox, p.webkit]:\n browser = await browser_type.launch()\n page = await browser.new_page()\n await page.goto('http://playwright.dev')\n await page.screenshot(path=f'example-{browser_type.name}.png')\n await browser.close()\n\nasyncio.run(main())\n```\n\n## Other languages\n\nMore comfortable in another programming language? [Playwright](https://playwright.dev) is also available in\n- [Node.js (JavaScript / TypeScript)](https://playwright.dev/docs/intro),\n- [.NET](https://playwright.dev/dotnet/docs/intro),\n- [Java](https://playwright.dev/java/docs/intro).\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A high-level API to automate web browsers",
"version": "1.48.100",
"project_urls": {
"Homepage": "https://github.com/rebrowser/rebrowser-playwright-python",
"Release notes": "https://github.com/rebrowser/rebrowser-playwright-python/releases"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c017eef3c7cb6cd847f9dc356e912b4666d6e3ea7aa77fc3a8b8c5735376b18d",
"md5": "810755187a09b1956c8837c16d2feb10",
"sha256": "0ec605da805899b9e32a0fd0ee908d3e1636a04226d2a89ac7c7c20358f4e20a"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "810755187a09b1956c8837c16d2feb10",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 34691510,
"upload_time": "2024-10-29T18:13:11",
"upload_time_iso_8601": "2024-10-29T18:13:11.927568Z",
"url": "https://files.pythonhosted.org/packages/c0/17/eef3c7cb6cd847f9dc356e912b4666d6e3ea7aa77fc3a8b8c5735376b18d/rebrowser_playwright-1.48.100-py3-none-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b8600cd6681f0ac82b4963c5e51ed4b324f56d517d124bc63513f6772d19bfec",
"md5": "9224f9e18d94dfd284a7d1f5886f6902",
"sha256": "70c0e2c1b12447db46fc56ef929fecad4de51b3a8ef51343f177a64ced58d3f1"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9224f9e18d94dfd284a7d1f5886f6902",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 33004878,
"upload_time": "2024-10-29T18:13:16",
"upload_time_iso_8601": "2024-10-29T18:13:16.873239Z",
"url": "https://files.pythonhosted.org/packages/b8/60/0cd6681f0ac82b4963c5e51ed4b324f56d517d124bc63513f6772d19bfec/rebrowser_playwright-1.48.100-py3-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7afbf914071175794df4849a31322919cc1416714eca726468ebdf892bba1711",
"md5": "136a46dfe69b0360a60f3d7b36ba5bcc",
"sha256": "3f0f24c3775471d16f7d870d5f39c71243a20342ce985f47d0bbf51a5e6e2e64"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-macosx_11_0_universal2.whl",
"has_sig": false,
"md5_digest": "136a46dfe69b0360a60f3d7b36ba5bcc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 34691512,
"upload_time": "2024-10-29T18:13:21",
"upload_time_iso_8601": "2024-10-29T18:13:21.169446Z",
"url": "https://files.pythonhosted.org/packages/7a/fb/f914071175794df4849a31322919cc1416714eca726468ebdf892bba1711/rebrowser_playwright-1.48.100-py3-none-macosx_11_0_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c06ed658501f799368c1ce927cb1d9aa7f5e47b79d7b7a7386fbe2d7fab4e396",
"md5": "eefe85a458cf185d2b8139a095e280a6",
"sha256": "4ad746ab42b565ad2b49b2dc7ef3e50628424214179012b3f563e68ccc1f3167"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "eefe85a458cf185d2b8139a095e280a6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 37873655,
"upload_time": "2024-10-29T18:13:26",
"upload_time_iso_8601": "2024-10-29T18:13:26.241888Z",
"url": "https://files.pythonhosted.org/packages/c0/6e/d658501f799368c1ce927cb1d9aa7f5e47b79d7b7a7386fbe2d7fab4e396/rebrowser_playwright-1.48.100-py3-none-manylinux1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "93fc606d2f899b1ef3cd72db879a5aef267b2220a00861d26fac73e0fa9bb5f3",
"md5": "c7ffba685dcab77e6df7d1951f61b518",
"sha256": "ce3e4381dde593c6acc8e1c1701c2f2c4ab423e764ff9d491a87c0d994872f8e"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "c7ffba685dcab77e6df7d1951f61b518",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 37621217,
"upload_time": "2024-10-29T18:13:30",
"upload_time_iso_8601": "2024-10-29T18:13:30.574463Z",
"url": "https://files.pythonhosted.org/packages/93/fc/606d2f899b1ef3cd72db879a5aef267b2220a00861d26fac73e0fa9bb5f3/rebrowser_playwright-1.48.100-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0f898c34600733e2d2512d3c24ea5b1aea975a3810491e642944478386537dd",
"md5": "43a9ff259ce75582abdcb4c15e7575c3",
"sha256": "3da12b0c3259956a633684ce4f502e2f7182294d8d2dbb21fb9dd3d820b9f992"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-win32.whl",
"has_sig": false,
"md5_digest": "43a9ff259ce75582abdcb4c15e7575c3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 29685085,
"upload_time": "2024-10-29T18:13:34",
"upload_time_iso_8601": "2024-10-29T18:13:34.430862Z",
"url": "https://files.pythonhosted.org/packages/f0/f8/98c34600733e2d2512d3c24ea5b1aea975a3810491e642944478386537dd/rebrowser_playwright-1.48.100-py3-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8feaddf2647c350f8e4707c1feaa6b3d7a46fc8c22426caafe4014183c3d0929",
"md5": "d77c926b0168426bdf445e3fd7a4b4da",
"sha256": "736d1676a1631021e41775bc3f2118582004da0702a07d572d17145dacd3bb24"
},
"downloads": -1,
"filename": "rebrowser_playwright-1.48.100-py3-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "d77c926b0168426bdf445e3fd7a4b4da",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 29685095,
"upload_time": "2024-10-29T18:13:38",
"upload_time_iso_8601": "2024-10-29T18:13:38.167245Z",
"url": "https://files.pythonhosted.org/packages/8f/ea/ddf2647c350f8e4707c1feaa6b3d7a46fc8c22426caafe4014183c3d0929/rebrowser_playwright-1.48.100-py3-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-29 18:13:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rebrowser",
"github_project": "rebrowser-playwright-python",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "rebrowser-playwright"
}