browser7 0.1.0a1__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.
- browser7-0.1.0a1/LICENSE +21 -0
- browser7-0.1.0a1/PKG-INFO +229 -0
- browser7-0.1.0a1/README.md +202 -0
- browser7-0.1.0a1/browser7/__init__.py +271 -0
- browser7-0.1.0a1/browser7/py.typed +2 -0
- browser7-0.1.0a1/browser7.egg-info/PKG-INFO +229 -0
- browser7-0.1.0a1/browser7.egg-info/SOURCES.txt +9 -0
- browser7-0.1.0a1/browser7.egg-info/dependency_links.txt +1 -0
- browser7-0.1.0a1/browser7.egg-info/top_level.txt +1 -0
- browser7-0.1.0a1/pyproject.toml +52 -0
- browser7-0.1.0a1/setup.cfg +4 -0
browser7-0.1.0a1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Browser7 Data Limited
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: browser7
|
|
3
|
+
Version: 0.1.0a1
|
|
4
|
+
Summary: Official Python SDK for Browser7 - Geo-targeted web scraping with automatic CAPTCHA solving and wait actions [ALPHA - API launching Q2 2026]
|
|
5
|
+
Author-email: Browser7 <support@browser7.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://browser7.com
|
|
8
|
+
Project-URL: Documentation, https://docs.browser7.com
|
|
9
|
+
Project-URL: Repository, https://github.com/browser7data/browser7-python
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/browser7data/browser7-python/issues
|
|
11
|
+
Keywords: browser7,web-scraping,scraping,rendering,headless-browser,captcha,captcha-solver,geo-targeting,proxy,api-client,screenshot,automation
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Requires-Python: >=3.8
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# Browser7 Python SDK
|
|
29
|
+
|
|
30
|
+
> ⚠️ **ALPHA RELEASE** - The Browser7 API is not yet publicly available. This package is published to reserve the package name. The API is expected to launch in **Q2 2026**.
|
|
31
|
+
>
|
|
32
|
+
> **Do not install this package yet** - it will not work until the Browser7 API is live. Follow [@browser7data](https://x.com/browser7data) or visit [browser7.com](https://browser7.com) for launch announcements.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
Official Python client for the [Browser7](https://browser7.com) web scraping and rendering API.
|
|
37
|
+
|
|
38
|
+
Browser7 provides geo-targeted web scraping with automatic proxy management, CAPTCHA solving, and powerful wait actions for dynamic content.
|
|
39
|
+
|
|
40
|
+
## Features
|
|
41
|
+
|
|
42
|
+
- 🌍 **Geo-Targeting** - Render pages from specific countries and cities
|
|
43
|
+
- 🤖 **CAPTCHA Solving** - Automatic detection and solving of reCAPTCHA and Cloudflare Turnstile
|
|
44
|
+
- ⏱️ **Wait Actions** - Click elements, wait for selectors, text, or delays
|
|
45
|
+
- 📸 **Screenshots** - Get JPEG screenshots of rendered pages
|
|
46
|
+
- 🚀 **Performance** - Block images, track bandwidth, view timing metrics
|
|
47
|
+
- 🔄 **Automatic Polling** - Built-in polling with progress callbacks
|
|
48
|
+
- 💪 **Type Hints** - Full type annotations for IDE support
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install browser7
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Requirements:** Python 3.8+
|
|
57
|
+
|
|
58
|
+
## Quick Start
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from browser7 import Browser7
|
|
62
|
+
|
|
63
|
+
client = Browser7(api_key='your-api-key')
|
|
64
|
+
|
|
65
|
+
# Simple render
|
|
66
|
+
result = client.render('https://example.com')
|
|
67
|
+
print(result.html)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Authentication
|
|
71
|
+
|
|
72
|
+
Get your API key from the [Browser7 Dashboard](https://dashboard.browser7.com).
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
client = Browser7(api_key='b7_your_api_key_here')
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Usage Examples
|
|
79
|
+
|
|
80
|
+
### Basic Rendering
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
result = client.render('https://example.com', country_code='US')
|
|
84
|
+
|
|
85
|
+
print(result.html) # Rendered HTML
|
|
86
|
+
print(result.screenshot) # JPEG screenshot (bytes)
|
|
87
|
+
print(result.selected_city) # City used for rendering
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### With Wait Actions
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from browser7 import wait_for_click, wait_for_selector, wait_for_delay
|
|
94
|
+
|
|
95
|
+
result = client.render(
|
|
96
|
+
'https://example.com',
|
|
97
|
+
country_code='GB',
|
|
98
|
+
city='london',
|
|
99
|
+
wait_for=[
|
|
100
|
+
wait_for_click('.cookie-accept'), # Click element
|
|
101
|
+
wait_for_selector('.main-content'), # Wait for element
|
|
102
|
+
wait_for_delay(2000) # Wait 2 seconds
|
|
103
|
+
]
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### With CAPTCHA Solving
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
result = client.render(
|
|
111
|
+
'https://protected-site.com',
|
|
112
|
+
country_code='US',
|
|
113
|
+
captcha='auto' # Auto-detect and solve CAPTCHAs
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
print(result.captcha) # CAPTCHA detection info
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## API Reference
|
|
120
|
+
|
|
121
|
+
### `Browser7(api_key, base_url=None)`
|
|
122
|
+
|
|
123
|
+
Create a new Browser7 client.
|
|
124
|
+
|
|
125
|
+
**Parameters:**
|
|
126
|
+
- `api_key` (str, required): Your Browser7 API key
|
|
127
|
+
- `base_url` (str, optional): Full API base URL. Defaults to production API.
|
|
128
|
+
|
|
129
|
+
**Example:**
|
|
130
|
+
```python
|
|
131
|
+
# Production (default)
|
|
132
|
+
client = Browser7(api_key='your-api-key')
|
|
133
|
+
|
|
134
|
+
# Canadian endpoint
|
|
135
|
+
client = Browser7(
|
|
136
|
+
api_key='your-api-key',
|
|
137
|
+
base_url='https://ca-api.browser7.com/v1'
|
|
138
|
+
)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `client.render(url, **options)`
|
|
142
|
+
|
|
143
|
+
Render a URL and poll for the result.
|
|
144
|
+
|
|
145
|
+
**Parameters:**
|
|
146
|
+
- `url` (str): The URL to render
|
|
147
|
+
- `country_code` (str, optional): Country code (e.g., 'US', 'GB', 'DE')
|
|
148
|
+
- `city` (str, optional): City name (e.g., 'new.york', 'london')
|
|
149
|
+
- `wait_for` (list, optional): List of wait actions (max 10)
|
|
150
|
+
- `captcha` (str, optional): CAPTCHA mode: 'disabled', 'auto', 'recaptcha_v2', 'recaptcha_v3', 'turnstile'
|
|
151
|
+
- `block_images` (bool, optional): Block images for faster rendering (default: True)
|
|
152
|
+
- `fetch_urls` (list, optional): Additional URLs to fetch (max 10)
|
|
153
|
+
|
|
154
|
+
**Returns:** `RenderResult` object
|
|
155
|
+
|
|
156
|
+
## Helper Functions
|
|
157
|
+
|
|
158
|
+
### `wait_for_delay(duration)`
|
|
159
|
+
|
|
160
|
+
Create a delay wait action.
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
wait_for_delay(3000) # Wait 3 seconds
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### `wait_for_selector(selector, state='visible', timeout=30000)`
|
|
167
|
+
|
|
168
|
+
Create a selector wait action.
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
wait_for_selector('.main-content', state='visible', timeout=10000)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### `wait_for_text(text, selector=None, timeout=30000)`
|
|
175
|
+
|
|
176
|
+
Create a text wait action.
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
wait_for_text('In Stock', selector='.availability', timeout=10000)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### `wait_for_click(selector, timeout=30000)`
|
|
183
|
+
|
|
184
|
+
Create a click wait action.
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
wait_for_click('.cookie-accept', timeout=5000)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Supported Countries
|
|
191
|
+
|
|
192
|
+
AT, BE, CA, CH, CZ, DE, FR, GB, HR, HU, IT, NL, PL, SK, US
|
|
193
|
+
|
|
194
|
+
See [Browser7 Documentation](https://docs.browser7.com) for available cities per country.
|
|
195
|
+
|
|
196
|
+
## CAPTCHA Support
|
|
197
|
+
|
|
198
|
+
Browser7 supports automatic CAPTCHA detection and solving for:
|
|
199
|
+
|
|
200
|
+
- **reCAPTCHA v2** - Google's image-based CAPTCHA
|
|
201
|
+
- **reCAPTCHA v3** - Google's score-based CAPTCHA
|
|
202
|
+
- **Cloudflare Turnstile** - Cloudflare's CAPTCHA alternative
|
|
203
|
+
|
|
204
|
+
**Modes:**
|
|
205
|
+
- `'disabled'` (default) - Skip CAPTCHA detection (fastest)
|
|
206
|
+
- `'auto'` - Auto-detect and solve any CAPTCHA type
|
|
207
|
+
- `'recaptcha_v2'`, `'recaptcha_v3'`, `'turnstile'` - Solve specific type
|
|
208
|
+
|
|
209
|
+
## Contributing
|
|
210
|
+
|
|
211
|
+
Issues and pull requests are welcome! Please visit our [GitHub repository](https://github.com/browser7data/browser7-python).
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
MIT
|
|
216
|
+
|
|
217
|
+
## Support
|
|
218
|
+
|
|
219
|
+
- 📧 Email: support@browser7.com
|
|
220
|
+
- 📚 Documentation: https://docs.browser7.com
|
|
221
|
+
- 🐛 Issues: https://github.com/browser7data/browser7-python/issues
|
|
222
|
+
- 💬 Discord: https://discord.gg/browser7
|
|
223
|
+
|
|
224
|
+
## Links
|
|
225
|
+
|
|
226
|
+
- [Browser7 Website](https://browser7.com)
|
|
227
|
+
- [API Documentation](https://docs.browser7.com/api)
|
|
228
|
+
- [Dashboard](https://dashboard.browser7.com)
|
|
229
|
+
- [Pricing](https://browser7.com/pricing)
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Browser7 Python SDK
|
|
2
|
+
|
|
3
|
+
> ⚠️ **ALPHA RELEASE** - The Browser7 API is not yet publicly available. This package is published to reserve the package name. The API is expected to launch in **Q2 2026**.
|
|
4
|
+
>
|
|
5
|
+
> **Do not install this package yet** - it will not work until the Browser7 API is live. Follow [@browser7data](https://x.com/browser7data) or visit [browser7.com](https://browser7.com) for launch announcements.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Official Python client for the [Browser7](https://browser7.com) web scraping and rendering API.
|
|
10
|
+
|
|
11
|
+
Browser7 provides geo-targeted web scraping with automatic proxy management, CAPTCHA solving, and powerful wait actions for dynamic content.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- 🌍 **Geo-Targeting** - Render pages from specific countries and cities
|
|
16
|
+
- 🤖 **CAPTCHA Solving** - Automatic detection and solving of reCAPTCHA and Cloudflare Turnstile
|
|
17
|
+
- ⏱️ **Wait Actions** - Click elements, wait for selectors, text, or delays
|
|
18
|
+
- 📸 **Screenshots** - Get JPEG screenshots of rendered pages
|
|
19
|
+
- 🚀 **Performance** - Block images, track bandwidth, view timing metrics
|
|
20
|
+
- 🔄 **Automatic Polling** - Built-in polling with progress callbacks
|
|
21
|
+
- 💪 **Type Hints** - Full type annotations for IDE support
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install browser7
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Requirements:** Python 3.8+
|
|
30
|
+
|
|
31
|
+
## Quick Start
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from browser7 import Browser7
|
|
35
|
+
|
|
36
|
+
client = Browser7(api_key='your-api-key')
|
|
37
|
+
|
|
38
|
+
# Simple render
|
|
39
|
+
result = client.render('https://example.com')
|
|
40
|
+
print(result.html)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Authentication
|
|
44
|
+
|
|
45
|
+
Get your API key from the [Browser7 Dashboard](https://dashboard.browser7.com).
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
client = Browser7(api_key='b7_your_api_key_here')
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Usage Examples
|
|
52
|
+
|
|
53
|
+
### Basic Rendering
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
result = client.render('https://example.com', country_code='US')
|
|
57
|
+
|
|
58
|
+
print(result.html) # Rendered HTML
|
|
59
|
+
print(result.screenshot) # JPEG screenshot (bytes)
|
|
60
|
+
print(result.selected_city) # City used for rendering
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### With Wait Actions
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from browser7 import wait_for_click, wait_for_selector, wait_for_delay
|
|
67
|
+
|
|
68
|
+
result = client.render(
|
|
69
|
+
'https://example.com',
|
|
70
|
+
country_code='GB',
|
|
71
|
+
city='london',
|
|
72
|
+
wait_for=[
|
|
73
|
+
wait_for_click('.cookie-accept'), # Click element
|
|
74
|
+
wait_for_selector('.main-content'), # Wait for element
|
|
75
|
+
wait_for_delay(2000) # Wait 2 seconds
|
|
76
|
+
]
|
|
77
|
+
)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### With CAPTCHA Solving
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
result = client.render(
|
|
84
|
+
'https://protected-site.com',
|
|
85
|
+
country_code='US',
|
|
86
|
+
captcha='auto' # Auto-detect and solve CAPTCHAs
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
print(result.captcha) # CAPTCHA detection info
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## API Reference
|
|
93
|
+
|
|
94
|
+
### `Browser7(api_key, base_url=None)`
|
|
95
|
+
|
|
96
|
+
Create a new Browser7 client.
|
|
97
|
+
|
|
98
|
+
**Parameters:**
|
|
99
|
+
- `api_key` (str, required): Your Browser7 API key
|
|
100
|
+
- `base_url` (str, optional): Full API base URL. Defaults to production API.
|
|
101
|
+
|
|
102
|
+
**Example:**
|
|
103
|
+
```python
|
|
104
|
+
# Production (default)
|
|
105
|
+
client = Browser7(api_key='your-api-key')
|
|
106
|
+
|
|
107
|
+
# Canadian endpoint
|
|
108
|
+
client = Browser7(
|
|
109
|
+
api_key='your-api-key',
|
|
110
|
+
base_url='https://ca-api.browser7.com/v1'
|
|
111
|
+
)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### `client.render(url, **options)`
|
|
115
|
+
|
|
116
|
+
Render a URL and poll for the result.
|
|
117
|
+
|
|
118
|
+
**Parameters:**
|
|
119
|
+
- `url` (str): The URL to render
|
|
120
|
+
- `country_code` (str, optional): Country code (e.g., 'US', 'GB', 'DE')
|
|
121
|
+
- `city` (str, optional): City name (e.g., 'new.york', 'london')
|
|
122
|
+
- `wait_for` (list, optional): List of wait actions (max 10)
|
|
123
|
+
- `captcha` (str, optional): CAPTCHA mode: 'disabled', 'auto', 'recaptcha_v2', 'recaptcha_v3', 'turnstile'
|
|
124
|
+
- `block_images` (bool, optional): Block images for faster rendering (default: True)
|
|
125
|
+
- `fetch_urls` (list, optional): Additional URLs to fetch (max 10)
|
|
126
|
+
|
|
127
|
+
**Returns:** `RenderResult` object
|
|
128
|
+
|
|
129
|
+
## Helper Functions
|
|
130
|
+
|
|
131
|
+
### `wait_for_delay(duration)`
|
|
132
|
+
|
|
133
|
+
Create a delay wait action.
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
wait_for_delay(3000) # Wait 3 seconds
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### `wait_for_selector(selector, state='visible', timeout=30000)`
|
|
140
|
+
|
|
141
|
+
Create a selector wait action.
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
wait_for_selector('.main-content', state='visible', timeout=10000)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### `wait_for_text(text, selector=None, timeout=30000)`
|
|
148
|
+
|
|
149
|
+
Create a text wait action.
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
wait_for_text('In Stock', selector='.availability', timeout=10000)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### `wait_for_click(selector, timeout=30000)`
|
|
156
|
+
|
|
157
|
+
Create a click wait action.
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
wait_for_click('.cookie-accept', timeout=5000)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Supported Countries
|
|
164
|
+
|
|
165
|
+
AT, BE, CA, CH, CZ, DE, FR, GB, HR, HU, IT, NL, PL, SK, US
|
|
166
|
+
|
|
167
|
+
See [Browser7 Documentation](https://docs.browser7.com) for available cities per country.
|
|
168
|
+
|
|
169
|
+
## CAPTCHA Support
|
|
170
|
+
|
|
171
|
+
Browser7 supports automatic CAPTCHA detection and solving for:
|
|
172
|
+
|
|
173
|
+
- **reCAPTCHA v2** - Google's image-based CAPTCHA
|
|
174
|
+
- **reCAPTCHA v3** - Google's score-based CAPTCHA
|
|
175
|
+
- **Cloudflare Turnstile** - Cloudflare's CAPTCHA alternative
|
|
176
|
+
|
|
177
|
+
**Modes:**
|
|
178
|
+
- `'disabled'` (default) - Skip CAPTCHA detection (fastest)
|
|
179
|
+
- `'auto'` - Auto-detect and solve any CAPTCHA type
|
|
180
|
+
- `'recaptcha_v2'`, `'recaptcha_v3'`, `'turnstile'` - Solve specific type
|
|
181
|
+
|
|
182
|
+
## Contributing
|
|
183
|
+
|
|
184
|
+
Issues and pull requests are welcome! Please visit our [GitHub repository](https://github.com/browser7data/browser7-python).
|
|
185
|
+
|
|
186
|
+
## License
|
|
187
|
+
|
|
188
|
+
MIT
|
|
189
|
+
|
|
190
|
+
## Support
|
|
191
|
+
|
|
192
|
+
- 📧 Email: support@browser7.com
|
|
193
|
+
- 📚 Documentation: https://docs.browser7.com
|
|
194
|
+
- 🐛 Issues: https://github.com/browser7data/browser7-python/issues
|
|
195
|
+
- 💬 Discord: https://discord.gg/browser7
|
|
196
|
+
|
|
197
|
+
## Links
|
|
198
|
+
|
|
199
|
+
- [Browser7 Website](https://browser7.com)
|
|
200
|
+
- [API Documentation](https://docs.browser7.com/api)
|
|
201
|
+
- [Dashboard](https://dashboard.browser7.com)
|
|
202
|
+
- [Pricing](https://browser7.com/pricing)
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Browser7 Python SDK
|
|
3
|
+
|
|
4
|
+
Official Python client for the Browser7 web scraping and rendering API.
|
|
5
|
+
|
|
6
|
+
⚠️ ALPHA RELEASE - This is a pre-release version published to reserve the package name.
|
|
7
|
+
The Browser7 API is not yet publicly available. Expected launch: Q2 2026.
|
|
8
|
+
|
|
9
|
+
Visit https://browser7.com for launch announcements.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
__version__ = "0.1.0a1"
|
|
13
|
+
__author__ = "Browser7"
|
|
14
|
+
__email__ = "support@browser7.com"
|
|
15
|
+
__url__ = "https://browser7.com"
|
|
16
|
+
|
|
17
|
+
from typing import Optional, List, Dict, Any, Callable
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Browser7:
|
|
21
|
+
"""
|
|
22
|
+
Browser7 API client.
|
|
23
|
+
|
|
24
|
+
⚠️ ALPHA: The Browser7 API is not yet live. This is a placeholder implementation.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
api_key: Your Browser7 API key
|
|
28
|
+
base_url: Optional custom API base URL
|
|
29
|
+
|
|
30
|
+
Example:
|
|
31
|
+
>>> client = Browser7(api_key='your-api-key')
|
|
32
|
+
>>> result = client.render('https://example.com')
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(
|
|
36
|
+
self,
|
|
37
|
+
api_key: str,
|
|
38
|
+
base_url: Optional[str] = None
|
|
39
|
+
):
|
|
40
|
+
"""Initialize Browser7 client."""
|
|
41
|
+
if not api_key:
|
|
42
|
+
raise ValueError("API key is required")
|
|
43
|
+
|
|
44
|
+
self.api_key = api_key
|
|
45
|
+
self.base_url = base_url or "https://api.browser7.com/v1"
|
|
46
|
+
|
|
47
|
+
def render(
|
|
48
|
+
self,
|
|
49
|
+
url: str,
|
|
50
|
+
country_code: Optional[str] = None,
|
|
51
|
+
city: Optional[str] = None,
|
|
52
|
+
wait_for: Optional[List[Dict[str, Any]]] = None,
|
|
53
|
+
captcha: Optional[str] = None,
|
|
54
|
+
block_images: Optional[bool] = None,
|
|
55
|
+
fetch_urls: Optional[List[str]] = None,
|
|
56
|
+
on_progress: Optional[Callable] = None
|
|
57
|
+
) -> "RenderResult":
|
|
58
|
+
"""
|
|
59
|
+
Render a URL and poll for the result.
|
|
60
|
+
|
|
61
|
+
⚠️ ALPHA: This method is not yet functional. The Browser7 API is not live.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
url: The URL to render
|
|
65
|
+
country_code: Country code (e.g., 'US', 'GB', 'DE')
|
|
66
|
+
city: City name (e.g., 'new.york', 'london')
|
|
67
|
+
wait_for: List of wait actions (max 10)
|
|
68
|
+
captcha: CAPTCHA mode ('disabled', 'auto', 'recaptcha_v2', 'recaptcha_v3', 'turnstile')
|
|
69
|
+
block_images: Whether to block images (default: True)
|
|
70
|
+
fetch_urls: Additional URLs to fetch (max 10)
|
|
71
|
+
on_progress: Optional progress callback function
|
|
72
|
+
|
|
73
|
+
Returns:
|
|
74
|
+
RenderResult object with HTML, screenshot, and metadata
|
|
75
|
+
|
|
76
|
+
Raises:
|
|
77
|
+
NotImplementedError: API is not yet available
|
|
78
|
+
"""
|
|
79
|
+
raise NotImplementedError(
|
|
80
|
+
"Browser7 API is not yet publicly available. "
|
|
81
|
+
"Expected launch: Q2 2026. Visit https://browser7.com for updates."
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
def create_render(
|
|
85
|
+
self,
|
|
86
|
+
url: str,
|
|
87
|
+
**options
|
|
88
|
+
) -> Dict[str, str]:
|
|
89
|
+
"""
|
|
90
|
+
Create a render job (low-level API).
|
|
91
|
+
|
|
92
|
+
⚠️ ALPHA: This method is not yet functional. The Browser7 API is not live.
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
url: The URL to render
|
|
96
|
+
**options: Render options
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
Dictionary with renderId
|
|
100
|
+
|
|
101
|
+
Raises:
|
|
102
|
+
NotImplementedError: API is not yet available
|
|
103
|
+
"""
|
|
104
|
+
raise NotImplementedError(
|
|
105
|
+
"Browser7 API is not yet publicly available. "
|
|
106
|
+
"Expected launch: Q2 2026. Visit https://browser7.com for updates."
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
def get_render(
|
|
110
|
+
self,
|
|
111
|
+
render_id: str
|
|
112
|
+
) -> "RenderResult":
|
|
113
|
+
"""
|
|
114
|
+
Get the status and result of a render job (low-level API).
|
|
115
|
+
|
|
116
|
+
⚠️ ALPHA: This method is not yet functional. The Browser7 API is not live.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
render_id: The render ID to retrieve
|
|
120
|
+
|
|
121
|
+
Returns:
|
|
122
|
+
RenderResult object
|
|
123
|
+
|
|
124
|
+
Raises:
|
|
125
|
+
NotImplementedError: API is not yet available
|
|
126
|
+
"""
|
|
127
|
+
raise NotImplementedError(
|
|
128
|
+
"Browser7 API is not yet publicly available. "
|
|
129
|
+
"Expected launch: Q2 2026. Visit https://browser7.com for updates."
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class RenderResult:
|
|
134
|
+
"""
|
|
135
|
+
Result from a render operation.
|
|
136
|
+
|
|
137
|
+
⚠️ ALPHA: Placeholder class. Full implementation coming with API launch.
|
|
138
|
+
|
|
139
|
+
Attributes:
|
|
140
|
+
status: Render status ('completed', 'processing', 'failed')
|
|
141
|
+
html: Rendered HTML content
|
|
142
|
+
screenshot: JPEG screenshot as bytes
|
|
143
|
+
selected_city: City information
|
|
144
|
+
bandwidth_metrics: Network bandwidth statistics
|
|
145
|
+
captcha: CAPTCHA detection info
|
|
146
|
+
timing_breakdown: Performance metrics
|
|
147
|
+
fetch_responses: Additional fetch responses
|
|
148
|
+
"""
|
|
149
|
+
|
|
150
|
+
def __init__(self, data: Dict[str, Any]):
|
|
151
|
+
"""Initialize from API response data."""
|
|
152
|
+
self.status = data.get('status')
|
|
153
|
+
self.html = data.get('html')
|
|
154
|
+
self.screenshot = data.get('screenshot')
|
|
155
|
+
self.selected_city = data.get('selectedCity')
|
|
156
|
+
self.bandwidth_metrics = data.get('bandwidthMetrics')
|
|
157
|
+
self.captcha = data.get('captcha')
|
|
158
|
+
self.timing_breakdown = data.get('timingBreakdown')
|
|
159
|
+
self.fetch_responses = data.get('fetchResponses')
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
# Helper functions for creating wait actions
|
|
163
|
+
|
|
164
|
+
def wait_for_delay(duration: int) -> Dict[str, Any]:
|
|
165
|
+
"""
|
|
166
|
+
Create a delay wait action.
|
|
167
|
+
|
|
168
|
+
Args:
|
|
169
|
+
duration: Duration in milliseconds (100-60000)
|
|
170
|
+
|
|
171
|
+
Returns:
|
|
172
|
+
Wait action dictionary
|
|
173
|
+
|
|
174
|
+
Example:
|
|
175
|
+
>>> wait_for_delay(3000) # Wait 3 seconds
|
|
176
|
+
"""
|
|
177
|
+
return {
|
|
178
|
+
'type': 'delay',
|
|
179
|
+
'duration': duration
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def wait_for_selector(
|
|
184
|
+
selector: str,
|
|
185
|
+
state: str = 'visible',
|
|
186
|
+
timeout: int = 30000
|
|
187
|
+
) -> Dict[str, Any]:
|
|
188
|
+
"""
|
|
189
|
+
Create a selector wait action.
|
|
190
|
+
|
|
191
|
+
Args:
|
|
192
|
+
selector: CSS selector to wait for
|
|
193
|
+
state: Element state ('visible', 'hidden', 'attached')
|
|
194
|
+
timeout: Timeout in milliseconds (1000-60000)
|
|
195
|
+
|
|
196
|
+
Returns:
|
|
197
|
+
Wait action dictionary
|
|
198
|
+
|
|
199
|
+
Example:
|
|
200
|
+
>>> wait_for_selector('.main-content', state='visible', timeout=10000)
|
|
201
|
+
"""
|
|
202
|
+
return {
|
|
203
|
+
'type': 'selector',
|
|
204
|
+
'selector': selector,
|
|
205
|
+
'state': state,
|
|
206
|
+
'timeout': timeout
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def wait_for_text(
|
|
211
|
+
text: str,
|
|
212
|
+
selector: Optional[str] = None,
|
|
213
|
+
timeout: int = 30000
|
|
214
|
+
) -> Dict[str, Any]:
|
|
215
|
+
"""
|
|
216
|
+
Create a text wait action.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
text: Text to wait for
|
|
220
|
+
selector: Optional CSS selector to limit search scope
|
|
221
|
+
timeout: Timeout in milliseconds (1000-60000)
|
|
222
|
+
|
|
223
|
+
Returns:
|
|
224
|
+
Wait action dictionary
|
|
225
|
+
|
|
226
|
+
Example:
|
|
227
|
+
>>> wait_for_text('In Stock', selector='.availability', timeout=10000)
|
|
228
|
+
"""
|
|
229
|
+
action = {
|
|
230
|
+
'type': 'text',
|
|
231
|
+
'text': text,
|
|
232
|
+
'timeout': timeout
|
|
233
|
+
}
|
|
234
|
+
if selector:
|
|
235
|
+
action['selector'] = selector
|
|
236
|
+
return action
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def wait_for_click(
|
|
240
|
+
selector: str,
|
|
241
|
+
timeout: int = 30000
|
|
242
|
+
) -> Dict[str, Any]:
|
|
243
|
+
"""
|
|
244
|
+
Create a click wait action.
|
|
245
|
+
|
|
246
|
+
Args:
|
|
247
|
+
selector: CSS selector of element to click
|
|
248
|
+
timeout: Timeout in milliseconds (1000-60000)
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
Wait action dictionary
|
|
252
|
+
|
|
253
|
+
Example:
|
|
254
|
+
>>> wait_for_click('.cookie-accept', timeout=5000)
|
|
255
|
+
"""
|
|
256
|
+
return {
|
|
257
|
+
'type': 'click',
|
|
258
|
+
'selector': selector,
|
|
259
|
+
'timeout': timeout
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
# Export public API
|
|
264
|
+
__all__ = [
|
|
265
|
+
'Browser7',
|
|
266
|
+
'RenderResult',
|
|
267
|
+
'wait_for_delay',
|
|
268
|
+
'wait_for_selector',
|
|
269
|
+
'wait_for_text',
|
|
270
|
+
'wait_for_click',
|
|
271
|
+
]
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: browser7
|
|
3
|
+
Version: 0.1.0a1
|
|
4
|
+
Summary: Official Python SDK for Browser7 - Geo-targeted web scraping with automatic CAPTCHA solving and wait actions [ALPHA - API launching Q2 2026]
|
|
5
|
+
Author-email: Browser7 <support@browser7.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://browser7.com
|
|
8
|
+
Project-URL: Documentation, https://docs.browser7.com
|
|
9
|
+
Project-URL: Repository, https://github.com/browser7data/browser7-python
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/browser7data/browser7-python/issues
|
|
11
|
+
Keywords: browser7,web-scraping,scraping,rendering,headless-browser,captcha,captcha-solver,geo-targeting,proxy,api-client,screenshot,automation
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Requires-Python: >=3.8
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# Browser7 Python SDK
|
|
29
|
+
|
|
30
|
+
> ⚠️ **ALPHA RELEASE** - The Browser7 API is not yet publicly available. This package is published to reserve the package name. The API is expected to launch in **Q2 2026**.
|
|
31
|
+
>
|
|
32
|
+
> **Do not install this package yet** - it will not work until the Browser7 API is live. Follow [@browser7data](https://x.com/browser7data) or visit [browser7.com](https://browser7.com) for launch announcements.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
Official Python client for the [Browser7](https://browser7.com) web scraping and rendering API.
|
|
37
|
+
|
|
38
|
+
Browser7 provides geo-targeted web scraping with automatic proxy management, CAPTCHA solving, and powerful wait actions for dynamic content.
|
|
39
|
+
|
|
40
|
+
## Features
|
|
41
|
+
|
|
42
|
+
- 🌍 **Geo-Targeting** - Render pages from specific countries and cities
|
|
43
|
+
- 🤖 **CAPTCHA Solving** - Automatic detection and solving of reCAPTCHA and Cloudflare Turnstile
|
|
44
|
+
- ⏱️ **Wait Actions** - Click elements, wait for selectors, text, or delays
|
|
45
|
+
- 📸 **Screenshots** - Get JPEG screenshots of rendered pages
|
|
46
|
+
- 🚀 **Performance** - Block images, track bandwidth, view timing metrics
|
|
47
|
+
- 🔄 **Automatic Polling** - Built-in polling with progress callbacks
|
|
48
|
+
- 💪 **Type Hints** - Full type annotations for IDE support
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install browser7
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Requirements:** Python 3.8+
|
|
57
|
+
|
|
58
|
+
## Quick Start
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from browser7 import Browser7
|
|
62
|
+
|
|
63
|
+
client = Browser7(api_key='your-api-key')
|
|
64
|
+
|
|
65
|
+
# Simple render
|
|
66
|
+
result = client.render('https://example.com')
|
|
67
|
+
print(result.html)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Authentication
|
|
71
|
+
|
|
72
|
+
Get your API key from the [Browser7 Dashboard](https://dashboard.browser7.com).
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
client = Browser7(api_key='b7_your_api_key_here')
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Usage Examples
|
|
79
|
+
|
|
80
|
+
### Basic Rendering
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
result = client.render('https://example.com', country_code='US')
|
|
84
|
+
|
|
85
|
+
print(result.html) # Rendered HTML
|
|
86
|
+
print(result.screenshot) # JPEG screenshot (bytes)
|
|
87
|
+
print(result.selected_city) # City used for rendering
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### With Wait Actions
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from browser7 import wait_for_click, wait_for_selector, wait_for_delay
|
|
94
|
+
|
|
95
|
+
result = client.render(
|
|
96
|
+
'https://example.com',
|
|
97
|
+
country_code='GB',
|
|
98
|
+
city='london',
|
|
99
|
+
wait_for=[
|
|
100
|
+
wait_for_click('.cookie-accept'), # Click element
|
|
101
|
+
wait_for_selector('.main-content'), # Wait for element
|
|
102
|
+
wait_for_delay(2000) # Wait 2 seconds
|
|
103
|
+
]
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### With CAPTCHA Solving
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
result = client.render(
|
|
111
|
+
'https://protected-site.com',
|
|
112
|
+
country_code='US',
|
|
113
|
+
captcha='auto' # Auto-detect and solve CAPTCHAs
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
print(result.captcha) # CAPTCHA detection info
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## API Reference
|
|
120
|
+
|
|
121
|
+
### `Browser7(api_key, base_url=None)`
|
|
122
|
+
|
|
123
|
+
Create a new Browser7 client.
|
|
124
|
+
|
|
125
|
+
**Parameters:**
|
|
126
|
+
- `api_key` (str, required): Your Browser7 API key
|
|
127
|
+
- `base_url` (str, optional): Full API base URL. Defaults to production API.
|
|
128
|
+
|
|
129
|
+
**Example:**
|
|
130
|
+
```python
|
|
131
|
+
# Production (default)
|
|
132
|
+
client = Browser7(api_key='your-api-key')
|
|
133
|
+
|
|
134
|
+
# Canadian endpoint
|
|
135
|
+
client = Browser7(
|
|
136
|
+
api_key='your-api-key',
|
|
137
|
+
base_url='https://ca-api.browser7.com/v1'
|
|
138
|
+
)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `client.render(url, **options)`
|
|
142
|
+
|
|
143
|
+
Render a URL and poll for the result.
|
|
144
|
+
|
|
145
|
+
**Parameters:**
|
|
146
|
+
- `url` (str): The URL to render
|
|
147
|
+
- `country_code` (str, optional): Country code (e.g., 'US', 'GB', 'DE')
|
|
148
|
+
- `city` (str, optional): City name (e.g., 'new.york', 'london')
|
|
149
|
+
- `wait_for` (list, optional): List of wait actions (max 10)
|
|
150
|
+
- `captcha` (str, optional): CAPTCHA mode: 'disabled', 'auto', 'recaptcha_v2', 'recaptcha_v3', 'turnstile'
|
|
151
|
+
- `block_images` (bool, optional): Block images for faster rendering (default: True)
|
|
152
|
+
- `fetch_urls` (list, optional): Additional URLs to fetch (max 10)
|
|
153
|
+
|
|
154
|
+
**Returns:** `RenderResult` object
|
|
155
|
+
|
|
156
|
+
## Helper Functions
|
|
157
|
+
|
|
158
|
+
### `wait_for_delay(duration)`
|
|
159
|
+
|
|
160
|
+
Create a delay wait action.
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
wait_for_delay(3000) # Wait 3 seconds
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### `wait_for_selector(selector, state='visible', timeout=30000)`
|
|
167
|
+
|
|
168
|
+
Create a selector wait action.
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
wait_for_selector('.main-content', state='visible', timeout=10000)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### `wait_for_text(text, selector=None, timeout=30000)`
|
|
175
|
+
|
|
176
|
+
Create a text wait action.
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
wait_for_text('In Stock', selector='.availability', timeout=10000)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### `wait_for_click(selector, timeout=30000)`
|
|
183
|
+
|
|
184
|
+
Create a click wait action.
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
wait_for_click('.cookie-accept', timeout=5000)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Supported Countries
|
|
191
|
+
|
|
192
|
+
AT, BE, CA, CH, CZ, DE, FR, GB, HR, HU, IT, NL, PL, SK, US
|
|
193
|
+
|
|
194
|
+
See [Browser7 Documentation](https://docs.browser7.com) for available cities per country.
|
|
195
|
+
|
|
196
|
+
## CAPTCHA Support
|
|
197
|
+
|
|
198
|
+
Browser7 supports automatic CAPTCHA detection and solving for:
|
|
199
|
+
|
|
200
|
+
- **reCAPTCHA v2** - Google's image-based CAPTCHA
|
|
201
|
+
- **reCAPTCHA v3** - Google's score-based CAPTCHA
|
|
202
|
+
- **Cloudflare Turnstile** - Cloudflare's CAPTCHA alternative
|
|
203
|
+
|
|
204
|
+
**Modes:**
|
|
205
|
+
- `'disabled'` (default) - Skip CAPTCHA detection (fastest)
|
|
206
|
+
- `'auto'` - Auto-detect and solve any CAPTCHA type
|
|
207
|
+
- `'recaptcha_v2'`, `'recaptcha_v3'`, `'turnstile'` - Solve specific type
|
|
208
|
+
|
|
209
|
+
## Contributing
|
|
210
|
+
|
|
211
|
+
Issues and pull requests are welcome! Please visit our [GitHub repository](https://github.com/browser7data/browser7-python).
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
MIT
|
|
216
|
+
|
|
217
|
+
## Support
|
|
218
|
+
|
|
219
|
+
- 📧 Email: support@browser7.com
|
|
220
|
+
- 📚 Documentation: https://docs.browser7.com
|
|
221
|
+
- 🐛 Issues: https://github.com/browser7data/browser7-python/issues
|
|
222
|
+
- 💬 Discord: https://discord.gg/browser7
|
|
223
|
+
|
|
224
|
+
## Links
|
|
225
|
+
|
|
226
|
+
- [Browser7 Website](https://browser7.com)
|
|
227
|
+
- [API Documentation](https://docs.browser7.com/api)
|
|
228
|
+
- [Dashboard](https://dashboard.browser7.com)
|
|
229
|
+
- [Pricing](https://browser7.com/pricing)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
browser7
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "browser7"
|
|
7
|
+
version = "0.1.0a1"
|
|
8
|
+
description = "Official Python SDK for Browser7 - Geo-targeted web scraping with automatic CAPTCHA solving and wait actions [ALPHA - API launching Q2 2026]"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
authors = [
|
|
11
|
+
{name = "Browser7", email = "support@browser7.com"}
|
|
12
|
+
]
|
|
13
|
+
license = {text = "MIT"}
|
|
14
|
+
requires-python = ">=3.8"
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 3 - Alpha",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.8",
|
|
21
|
+
"Programming Language :: Python :: 3.9",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
26
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
27
|
+
]
|
|
28
|
+
keywords = [
|
|
29
|
+
"browser7",
|
|
30
|
+
"web-scraping",
|
|
31
|
+
"scraping",
|
|
32
|
+
"rendering",
|
|
33
|
+
"headless-browser",
|
|
34
|
+
"captcha",
|
|
35
|
+
"captcha-solver",
|
|
36
|
+
"geo-targeting",
|
|
37
|
+
"proxy",
|
|
38
|
+
"api-client",
|
|
39
|
+
"screenshot",
|
|
40
|
+
"automation"
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[project.urls]
|
|
44
|
+
Homepage = "https://browser7.com"
|
|
45
|
+
Documentation = "https://docs.browser7.com"
|
|
46
|
+
Repository = "https://github.com/browser7data/browser7-python"
|
|
47
|
+
"Bug Tracker" = "https://github.com/browser7data/browser7-python/issues"
|
|
48
|
+
|
|
49
|
+
[tool.setuptools.packages.find]
|
|
50
|
+
where = ["."]
|
|
51
|
+
include = ["browser7*"]
|
|
52
|
+
exclude = ["tests*"]
|