Skip to content

Commit 65086de

Browse files
authored
Browser network policy (#111)
* expose browser network policies * bump version
1 parent 80b5e8b commit 65086de

4 files changed

Lines changed: 31 additions & 1 deletion

File tree

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,23 @@ session = client.sessions.create(
5454
)
5555
```
5656

57+
Browser sessions can also use an outbound network policy. Omitting these fields
58+
keeps the default unrestricted behavior:
59+
60+
```python
61+
session = client.sessions.create(
62+
{
63+
"allow_internet_access": False,
64+
"allow_out": ["example.com"],
65+
"deny_out": ["0.0.0.0/0"],
66+
}
67+
)
68+
```
69+
70+
Direct browser policies accept domains, IPv4 addresses, and CIDR ranges in
71+
`allow_out`; `deny_out` accepts IPv4 addresses and CIDR ranges. With a proxy,
72+
allow rules must be domains and the only supported deny rule is `0.0.0.0/0`.
73+
5774
Existing Pydantic request classes remain accepted, so upgrading does not require
5875
an immediate rewrite:
5976

hyperbrowser/models/session.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ class SessionLaunchState(BaseModel):
144144
default=None, alias="enableVideoWebRecording"
145145
)
146146
enable_log_capture: Optional[bool] = Field(default=None, alias="enableLogCapture")
147+
allow_internet_access: Optional[bool] = Field(
148+
default=None, alias="allowInternetAccess"
149+
)
150+
allow_out: Optional[List[str]] = Field(default=None, alias="allowOut")
151+
deny_out: Optional[List[str]] = Field(default=None, alias="denyOut")
147152
accept_cookies: Optional[bool] = Field(default=None, alias="acceptCookies")
148153
solver_type: Optional[CaptchaSolverType] = Field(default=None, alias="solverType")
149154
profile: Optional[SessionProfile] = Field(default=None, alias="profile")
@@ -472,6 +477,11 @@ class CreateSessionParams(BaseModel):
472477
timeout_minutes: Optional[int] = Field(
473478
default=None, serialization_alias="timeoutMinutes"
474479
)
480+
allow_internet_access: Optional[bool] = Field(
481+
default=None, serialization_alias="allowInternetAccess"
482+
)
483+
allow_out: Optional[List[str]] = Field(default=None, serialization_alias="allowOut")
484+
deny_out: Optional[List[str]] = Field(default=None, serialization_alias="denyOut")
475485
enable_window_manager: Optional[bool] = Field(
476486
default=None, serialization_alias="enableWindowManager"
477487
)

hyperbrowser/types/session.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ class CreateSessionParams(TypedDict, total=False):
149149
save_downloads: Optional[bool]
150150
image_captcha_params: Optional[List[ImageCaptchaParam]]
151151
timeout_minutes: Optional[int]
152+
allow_internet_access: Optional[bool]
153+
allow_out: Optional[List[str]]
154+
deny_out: Optional[List[str]]
152155
enable_window_manager: Optional[bool]
153156
enable_window_manager_taskbar: Optional[bool]
154157
region: Optional[SessionRegion]

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "hyperbrowser"
3-
version = "1.0.0"
3+
version = "1.1.0"
44
description = "Python SDK for hyperbrowser"
55
authors = ["Nikhil Shahi <nshahi1998@gmail.com>"]
66
license = "MIT"

0 commit comments

Comments
 (0)