Skip to content

Commit c701e6f

Browse files
committed
Update the docs
1 parent 7a081db commit c701e6f

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

examples/cdp_mode/playwright/ReadMe/index.html

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,15 @@
411411
</span>
412412
</a>
413413

414+
</li>
415+
416+
<li class="md-nav__item">
417+
<a href="#proxy-with-auth-in-stealthy-playwright-mode" class="md-nav__link">
418+
<span class="md-ellipsis">
419+
🎭 Proxy with auth in Stealthy Playwright Mode:
420+
</span>
421+
</a>
422+
414423
</li>
415424

416425
</ul>
@@ -2928,6 +2937,15 @@
29282937
</span>
29292938
</a>
29302939

2940+
</li>
2941+
2942+
<li class="md-nav__item">
2943+
<a href="#proxy-with-auth-in-stealthy-playwright-mode" class="md-nav__link">
2944+
<span class="md-ellipsis">
2945+
🎭 Proxy with auth in Stealthy Playwright Mode:
2946+
</span>
2947+
</a>
2948+
29312949
</li>
29322950

29332951
</ul>
@@ -3060,6 +3078,63 @@ <h3 id="stealthy-playwright-mode-examples">🎭 <b translate="no">Stealthy Playw
30603078
<span class="n">sb</span><span class="o">.</span><span class="n">solve_captcha</span><span class="p">()</span>
30613079
<span class="n">sb</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
30623080
</code></pre></div>
3081+
<hr />
3082+
<h3 id="proxy-with-auth-in-stealthy-playwright-mode">🎭 Proxy with auth in <b translate="no">Stealthy Playwright Mode</b>:<a class="headerlink" href="#proxy-with-auth-in-stealthy-playwright-mode" title="Permanent link">&para;</a></h3>
3083+
<p>To use an authenticated proxy in Stealthy Playwright Mode, <strong>do these two things</strong>:
3084+
<strong>1.</strong> Set the<code>proxy</code> arg when launching Chrome.
3085+
-- Eg: <code>sb_cdp.Chrome(proxy="USER:PASS@IP:PORT")</code> or <code>cdp_driver.start_async("USER:PASS@IP:PORT")</code>.
3086+
<strong>2.</strong> Open the URL with SeleniumBase <strong>before</strong> using <code>endpoint_url</code> to connect to the browser with Playwright.</p>
3087+
<p>⚠️ If any trouble with the above, set <code>use_chromium=True</code> so that you can use the base Chromium browser, which still allows extensions, unlike regular branded Chrome, which removed the <code>--load-extension</code> command-line switch. (<em>An extension is used to set the auth for the proxy, which is needed when CDP can't set the proxy alone, such as for navigation after the initial page load</em>).</p>
3088+
<p>In the sync format, use <code>sb.open(url)</code> to open the url before connecting Playwright:
3089+
<div class="highlight"><pre><span></span><code><span class="n">sb</span> <span class="o">=</span> <span class="n">sb_cdp</span><span class="o">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">use_chromium</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">proxy</span><span class="o">=</span><span class="s2">&quot;user:pass@server:port&quot;</span><span class="p">)</span>
3090+
<span class="n">sb</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
3091+
<span class="n">endpoint_url</span> <span class="o">=</span> <span class="n">sb</span><span class="o">.</span><span class="n">get_endpoint_url</span><span class="p">()</span>
3092+
<span class="c1"># ...</span>
3093+
</code></pre></div></p>
3094+
<p>In the async format, use, <code>driver.get(url)</code> to open the url before connecting Playwright:
3095+
<div class="highlight"><pre><span></span><code><span class="n">driver</span> <span class="o">=</span> <span class="k">await</span> <span class="n">cdp_driver</span><span class="o">.</span><span class="n">start_async</span><span class="p">(</span><span class="n">use_chromium</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">proxy</span><span class="o">=</span><span class="s2">&quot;user:pass@server:port&quot;</span><span class="p">)</span>
3096+
<span class="k">await</span> <span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
3097+
<span class="n">endpoint_url</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">get_endpoint_url</span><span class="p">()</span>
3098+
<span class="c1"># ...</span>
3099+
</code></pre></div></p>
3100+
<p>Here's an example of using an authenticated proxy with Stealthy Playwright Mode:
3101+
(The URL is opened before attaching Playwright so that proxy settings take effect)
3102+
<div class="highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">sync_playwright</span>
3103+
<span class="kn">from</span><span class="w"> </span><span class="nn">seleniumbase</span><span class="w"> </span><span class="kn">import</span> <span class="n">sb_cdp</span>
3104+
3105+
<span class="n">sb</span> <span class="o">=</span> <span class="n">sb_cdp</span><span class="o">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">use_chromium</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">proxy</span><span class="o">=</span><span class="s2">&quot;user:pass@server:port&quot;</span><span class="p">)</span>
3106+
<span class="n">sb</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
3107+
<span class="n">endpoint_url</span> <span class="o">=</span> <span class="n">sb</span><span class="o">.</span><span class="n">get_endpoint_url</span><span class="p">()</span>
3108+
3109+
<span class="k">with</span> <span class="n">sync_playwright</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
3110+
<span class="n">browser</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">chromium</span><span class="o">.</span><span class="n">connect_over_cdp</span><span class="p">(</span><span class="n">endpoint_url</span><span class="p">)</span>
3111+
<span class="n">context</span> <span class="o">=</span> <span class="n">browser</span><span class="o">.</span><span class="n">contexts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
3112+
<span class="n">page</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">pages</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
3113+
<span class="c1"># ...</span>
3114+
</code></pre></div>
3115+
(Fill in the <code>url</code> and the <code>proxy</code> details to complete the script.)</p>
3116+
<p>Here's the same thing for the <code>async</code> format:
3117+
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span>
3118+
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.async_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">async_playwright</span>
3119+
<span class="kn">from</span><span class="w"> </span><span class="nn">seleniumbase</span><span class="w"> </span><span class="kn">import</span> <span class="n">cdp_driver</span>
3120+
3121+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
3122+
<span class="n">driver</span> <span class="o">=</span> <span class="k">await</span> <span class="n">cdp_driver</span><span class="o">.</span><span class="n">start_async</span><span class="p">(</span><span class="n">use_chromium</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">proxy</span><span class="o">=</span><span class="s2">&quot;user:pass@server:port&quot;</span><span class="p">)</span>
3123+
<span class="k">await</span> <span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
3124+
<span class="n">endpoint_url</span> <span class="o">=</span> <span class="n">driver</span><span class="o">.</span><span class="n">get_endpoint_url</span><span class="p">()</span>
3125+
3126+
<span class="k">async</span> <span class="k">with</span> <span class="n">async_playwright</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
3127+
<span class="n">browser</span> <span class="o">=</span> <span class="k">await</span> <span class="n">p</span><span class="o">.</span><span class="n">chromium</span><span class="o">.</span><span class="n">connect_over_cdp</span><span class="p">(</span><span class="n">endpoint_url</span><span class="p">)</span>
3128+
<span class="n">context</span> <span class="o">=</span> <span class="n">browser</span><span class="o">.</span><span class="n">contexts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
3129+
<span class="n">page</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">pages</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
3130+
<span class="c1"># ...</span>
3131+
3132+
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
3133+
<span class="n">loop</span> <span class="o">=</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">new_event_loop</span><span class="p">()</span>
3134+
<span class="n">loop</span><span class="o">.</span><span class="n">run_until_complete</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
3135+
</code></pre></div>
3136+
(Fill in the <code>url</code> and the <code>proxy</code> details to complete the script.)</p>
3137+
<hr />
30633138
<p>For more examples, see <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/cdp_mode/playwright">examples/cdp_mode/playwright</a>.</p>
30643139
<hr />
30653140
<p><a href="https://github.com/seleniumbase/SeleniumBase"><img src="https://seleniumbase.github.io/img/logo6.png" alt="SeleniumBase" title="SeleniumBase" width="100" /></a><img src="https://seleniumbase.github.io/other/playwright_logo.png" alt="Playwright" title="Playwright" width="161"></p>

search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)