Skip to content

Commit 1d02f9b

Browse files
committed
Update API documentation for version 0.11.0
1 parent 770dcad commit 1d02f9b

4 files changed

Lines changed: 362 additions & 48 deletions

File tree

docs/scrapfly/browser_config.html

Lines changed: 108 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
4848
<dl>
4949
<dt id="scrapfly.browser_config.BrowserConfig"><code class="flex name class">
5050
<span>class <span class="ident">BrowserConfig</span></span>
51-
<span>(</span><span>proxy_pool: str | <a title="scrapfly.browser_config.ProxyPool" href="#scrapfly.browser_config.ProxyPool">ProxyPool</a> | None = None,<br>os: str | <a title="scrapfly.browser_config.OperatingSystem" href="#scrapfly.browser_config.OperatingSystem">OperatingSystem</a> | None = None,<br>session: str | None = None,<br>country: str | None = None,<br>auto_close: bool | None = None,<br>timeout: int | None = None,<br>debug: bool | None = None,<br>extensions: List[str] | None = None,<br>block_images: bool | None = None,<br>block_styles: bool | None = None,<br>block_fonts: bool | None = None,<br>block_media: bool | None = None,<br>screenshot: bool | None = None,<br>resolution: str | None = None,<br>target_url: str | None = None,<br>cache: bool | None = None,<br>blacklist: bool | None = None,<br>unblock: bool | None = None,<br>unblock_timeout: int | None = None,<br>browser_brand: str | None = None,<br>byop_proxy: str | None = None,<br>enable_mcp: bool | None = None,<br>solve_captcha: bool | None = None,<br>vault: str | None = None,<br>vault_key: str | None = None)</span>
51+
<span>(</span><span>proxy_pool: str | <a title="scrapfly.browser_config.ProxyPool" href="#scrapfly.browser_config.ProxyPool">ProxyPool</a> | None = None,<br>os: str | <a title="scrapfly.browser_config.OperatingSystem" href="#scrapfly.browser_config.OperatingSystem">OperatingSystem</a> | None = None,<br>session: str | None = None,<br>country: str | None = None,<br>auto_close: bool | None = None,<br>timeout: int | None = None,<br>debug: bool | None = None,<br>extensions: List[str] | None = None,<br>block_images: bool | None = None,<br>block_styles: bool | None = None,<br>block_fonts: bool | None = None,<br>block_media: bool | None = None,<br>screenshot: bool | None = None,<br>resolution: str | None = None,<br>target_url: str | None = None,<br>cache: bool | None = None,<br>blacklist: bool | None = None,<br>unblock: bool | None = None,<br>unblock_timeout: int | None = None,<br>browser_brand: str | None = None,<br>byop_proxy: str | None = None,<br>enable_mcp: bool | None = None,<br>solve_captcha: bool | None = None,<br>vault: str | None = None,<br>vault_key: str | None = None,<br>enable_vnc: bool | None = None,<br>vnc_password: str | None = None,<br>enable_rtc: bool | None = None,<br>rtc_username: str | None = None,<br>rtc_password: str | None = None,<br>hitl_allowed_networks: str | List[str] | None = None)</span>
5252
</code></dt>
5353
<dd>
5454
<details class="source">
@@ -86,6 +86,12 @@ <h2 class="section-title" id="header-classes">Classes</h2>
8686
solve_captcha: Optional[bool] = None,
8787
vault: Optional[str] = None,
8888
vault_key: Optional[str] = None,
89+
enable_vnc: Optional[bool] = None,
90+
vnc_password: Optional[str] = None,
91+
enable_rtc: Optional[bool] = None,
92+
rtc_username: Optional[str] = None,
93+
rtc_password: Optional[str] = None,
94+
hitl_allowed_networks: Optional[Union[str, List[str]]] = None,
8995
):
9096
if timeout is not None and timeout &gt; 1800:
9197
raise ValueError(&#39;timeout cannot exceed 1800 seconds (30 minutes)&#39;)
@@ -131,15 +137,33 @@ <h2 class="section-title" id="header-classes">Classes</h2>
131137
# automatically. Billed per solve; failures cost nothing.
132138
# https://scrapfly.io/docs/cloud-browser-api/captcha-solver
133139
self.solve_captcha = solve_captcha
134-
# Cloud Browser Credential Vault binding. `vault` is the vault id
135-
# (UUID) returned by POST /vault; `vault_key` is the base64 32-byte
140+
# Cloud Browser Credential Vault binding. `vault` is the vault NAME
141+
# (the human name you gave it at POST /vault — alphanumeric); the
142+
# server resolves it to the underlying vault scoped to your api-key&#39;s
143+
# project and environment. `vault_key` is the base64 32-byte
136144
# customer-held key returned (once) by POST /vault or POST
137145
# /vault/&lt;id&gt;/rotate. Both are forwarded as query params on the
138146
# wss:// URL — the server uses them to decrypt items into the
139147
# session&#39;s secret broker. Treat `vault_key` as a credential: never
140148
# log it, never persist it server-side.
141149
self.vault = vault
142150
self.vault_key = vault_key
151+
self.enable_vnc = enable_vnc
152+
self.vnc_password = vnc_password
153+
self.enable_rtc = enable_rtc
154+
self.rtc_username = rtc_username
155+
self.rtc_password = rtc_password
156+
if isinstance(hitl_allowed_networks, list):
157+
hitl_allowed_networks = &#39;,&#39;.join(s.strip() for s in hitl_allowed_networks if s and s.strip())
158+
self.hitl_allowed_networks = hitl_allowed_networks or None
159+
160+
@staticmethod
161+
def project_salt(api_key: str) -&gt; str:
162+
&#34;&#34;&#34;Return the deterministic project salt for an api_key:
163+
sha256(api_key)[:8]. The server exposes the same value via the
164+
X-Browser-Project-Salt response header on a successful WS upgrade.
165+
&#34;&#34;&#34;
166+
return hashlib.sha256(api_key.encode(&#39;utf-8&#39;)).hexdigest()[:8]
143167

144168
def websocket_url(self, api_key: str, host: Optional[str] = None) -&gt; str:
145169
params = {&#39;api_key&#39;: api_key}
@@ -219,6 +243,24 @@ <h2 class="section-title" id="header-classes">Classes</h2>
219243
if self.vault_key is not None:
220244
params[&#39;vault_key&#39;] = self.vault_key
221245

246+
if self.enable_vnc is not None:
247+
params[&#39;enable_vnc&#39;] = self._bool_to_http(self.enable_vnc)
248+
249+
if self.vnc_password is not None:
250+
params[&#39;vnc_password&#39;] = self.vnc_password
251+
252+
if self.enable_rtc is not None:
253+
params[&#39;enable_rtc&#39;] = self._bool_to_http(self.enable_rtc)
254+
255+
if self.rtc_username is not None:
256+
params[&#39;rtc_username&#39;] = self.rtc_username
257+
258+
if self.rtc_password is not None:
259+
params[&#39;rtc_password&#39;] = self.rtc_password
260+
261+
if self.hitl_allowed_networks is not None:
262+
params[&#39;hitl_allowed_networks&#39;] = self.hitl_allowed_networks
263+
222264
base_host = host or self.CLOUD_BROWSER_HOST
223265
return base_host + &#39;?&#39; + urlencode(params)
224266

@@ -249,6 +291,12 @@ <h2 class="section-title" id="header-classes">Classes</h2>
249291
&#39;solve_captcha&#39;: self.solve_captcha,
250292
&#39;vault&#39;: self.vault,
251293
&#39;vault_key&#39;: self.vault_key,
294+
&#39;enable_vnc&#39;: self.enable_vnc,
295+
&#39;vnc_password&#39;: self.vnc_password,
296+
&#39;enable_rtc&#39;: self.enable_rtc,
297+
&#39;rtc_username&#39;: self.rtc_username,
298+
&#39;rtc_password&#39;: self.rtc_password,
299+
&#39;hitl_allowed_networks&#39;: self.hitl_allowed_networks,
252300
}
253301

254302
@staticmethod
@@ -287,6 +335,12 @@ <h2 class="section-title" id="header-classes">Classes</h2>
287335
solve_captcha=browser_config_dict.get(&#39;solve_captcha&#39;, None),
288336
vault=browser_config_dict.get(&#39;vault&#39;, None),
289337
vault_key=browser_config_dict.get(&#39;vault_key&#39;, None),
338+
enable_vnc=browser_config_dict.get(&#39;enable_vnc&#39;, None),
339+
vnc_password=browser_config_dict.get(&#39;vnc_password&#39;, None),
340+
enable_rtc=browser_config_dict.get(&#39;enable_rtc&#39;, None),
341+
rtc_username=browser_config_dict.get(&#39;rtc_username&#39;, None),
342+
rtc_password=browser_config_dict.get(&#39;rtc_password&#39;, None),
343+
hitl_allowed_networks=browser_config_dict.get(&#39;hitl_allowed_networks&#39;, None),
290344
)</code></pre>
291345
</details>
292346
<div class="desc"></div>
@@ -347,10 +401,36 @@ <h3>Static methods</h3>
347401
solve_captcha=browser_config_dict.get(&#39;solve_captcha&#39;, None),
348402
vault=browser_config_dict.get(&#39;vault&#39;, None),
349403
vault_key=browser_config_dict.get(&#39;vault_key&#39;, None),
404+
enable_vnc=browser_config_dict.get(&#39;enable_vnc&#39;, None),
405+
vnc_password=browser_config_dict.get(&#39;vnc_password&#39;, None),
406+
enable_rtc=browser_config_dict.get(&#39;enable_rtc&#39;, None),
407+
rtc_username=browser_config_dict.get(&#39;rtc_username&#39;, None),
408+
rtc_password=browser_config_dict.get(&#39;rtc_password&#39;, None),
409+
hitl_allowed_networks=browser_config_dict.get(&#39;hitl_allowed_networks&#39;, None),
350410
)</code></pre>
351411
</details>
352412
<div class="desc"></div>
353413
</dd>
414+
<dt id="scrapfly.browser_config.BrowserConfig.project_salt"><code class="name flex">
415+
<span>def <span class="ident">project_salt</span></span>(<span>api_key: str) ‑> str</span>
416+
</code></dt>
417+
<dd>
418+
<details class="source">
419+
<summary>
420+
<span>Expand source code</span>
421+
</summary>
422+
<pre><code class="python">@staticmethod
423+
def project_salt(api_key: str) -&gt; str:
424+
&#34;&#34;&#34;Return the deterministic project salt for an api_key:
425+
sha256(api_key)[:8]. The server exposes the same value via the
426+
X-Browser-Project-Salt response header on a successful WS upgrade.
427+
&#34;&#34;&#34;
428+
return hashlib.sha256(api_key.encode(&#39;utf-8&#39;)).hexdigest()[:8]</code></pre>
429+
</details>
430+
<div class="desc"><p>Return the deterministic project salt for an api_key:
431+
sha256(api_key)[:8]. The server exposes the same value via the
432+
X-Browser-Project-Salt response header on a successful WS upgrade.</p></div>
433+
</dd>
354434
</dl>
355435
<h3>Methods</h3>
356436
<dl>
@@ -389,6 +469,12 @@ <h3>Methods</h3>
389469
&#39;solve_captcha&#39;: self.solve_captcha,
390470
&#39;vault&#39;: self.vault,
391471
&#39;vault_key&#39;: self.vault_key,
472+
&#39;enable_vnc&#39;: self.enable_vnc,
473+
&#39;vnc_password&#39;: self.vnc_password,
474+
&#39;enable_rtc&#39;: self.enable_rtc,
475+
&#39;rtc_username&#39;: self.rtc_username,
476+
&#39;rtc_password&#39;: self.rtc_password,
477+
&#39;hitl_allowed_networks&#39;: self.hitl_allowed_networks,
392478
}</code></pre>
393479
</details>
394480
<div class="desc"></div>
@@ -479,6 +565,24 @@ <h3>Methods</h3>
479565
if self.vault_key is not None:
480566
params[&#39;vault_key&#39;] = self.vault_key
481567

568+
if self.enable_vnc is not None:
569+
params[&#39;enable_vnc&#39;] = self._bool_to_http(self.enable_vnc)
570+
571+
if self.vnc_password is not None:
572+
params[&#39;vnc_password&#39;] = self.vnc_password
573+
574+
if self.enable_rtc is not None:
575+
params[&#39;enable_rtc&#39;] = self._bool_to_http(self.enable_rtc)
576+
577+
if self.rtc_username is not None:
578+
params[&#39;rtc_username&#39;] = self.rtc_username
579+
580+
if self.rtc_password is not None:
581+
params[&#39;rtc_password&#39;] = self.rtc_password
582+
583+
if self.hitl_allowed_networks is not None:
584+
params[&#39;hitl_allowed_networks&#39;] = self.hitl_allowed_networks
585+
482586
base_host = host or self.CLOUD_BROWSER_HOST
483587
return base_host + &#39;?&#39; + urlencode(params)</code></pre>
484588
</details>
@@ -571,6 +675,7 @@ <h4><code><a title="scrapfly.browser_config.BrowserConfig" href="#scrapfly.brows
571675
<ul class="">
572676
<li><code><a title="scrapfly.browser_config.BrowserConfig.CLOUD_BROWSER_HOST" href="#scrapfly.browser_config.BrowserConfig.CLOUD_BROWSER_HOST">CLOUD_BROWSER_HOST</a></code></li>
573677
<li><code><a title="scrapfly.browser_config.BrowserConfig.from_dict" href="#scrapfly.browser_config.BrowserConfig.from_dict">from_dict</a></code></li>
678+
<li><code><a title="scrapfly.browser_config.BrowserConfig.project_salt" href="#scrapfly.browser_config.BrowserConfig.project_salt">project_salt</a></code></li>
574679
<li><code><a title="scrapfly.browser_config.BrowserConfig.to_dict" href="#scrapfly.browser_config.BrowserConfig.to_dict">to_dict</a></code></li>
575680
<li><code><a title="scrapfly.browser_config.BrowserConfig.websocket_url" href="#scrapfly.browser_config.BrowserConfig.websocket_url">websocket_url</a></code></li>
576681
</ul>

0 commit comments

Comments
 (0)