PageSourceSearch

https://anti-captcha.com/apidoc/articles/how-to-integrate-the-plugin

html anti-captcha.com collected 2026-10-03 20:21:57 UTC 95,885 bytes, 457 lines download raw bytes

1<!DOCTYPE html>
2<html  lang="en">
3<head><meta charset="utf-8"><link rel="preload" as="font" type="font/woff2" href="/_fonts/5OTXZ4M8NqKHmf3vznUpTBulrQMATUZV6lUfBehj6Rw-HxPzBaDMYcoM_heoB9jDgrgSWq2QeXBEKwaFv3-0drg.woff2" crossorigin>
4<meta name="viewport" content="width=device-width, initial-scale=1">
5<title>How to use the Anti-Captcha plugin in Puppeteer or Selenium</title>
6<link rel="alternate" hreflang="en" href="https://anti-captcha.com/apidoc/articles/how-to-integrate-the-plugin">
7<link rel="alternate" hreflang="x-default" href="https://anti-captcha.com/apidoc/articles/how-to-integrate-the-plugin">
8<link rel="alternate" hreflang="sv" href="https://anti-captcha.com/sv/apidoc/articles/how-to-integrate-the-plugin">
9<link rel="alternate" hreflang="pt" href="https://anti-captcha.com/pt/apidoc/articles/how-to-integrate-the-plugin">
10<link rel="alternate" hreflang="fr" href="https://anti-captcha.com/fr/apidoc/articles/how-to-integrate-the-plugin">
11<link rel="alternate" hreflang="nl" href="https://anti-captcha.com/nl/apidoc/articles/how-to-integrate-the-plugin">
12<link rel="alternate" hreflang="es" href="https://anti-captcha.com/es/apidoc/articles/how-to-integrate-the-plugin">
13<link rel="alternate" hreflang="de" href="https://anti-captcha.com/de/apidoc/articles/how-to-integrate-the-plugin">
14<link rel="alternate" hreflang="it" href="https://anti-captcha.com/it/apidoc/articles/how-to-integrate-the-plugin">
15<link rel="alternate" hreflang="pl" href="https://anti-captcha.com/pl/apidoc/articles/how-to-integrate-the-plugin">
16<link rel="alternate" hreflang="uk" href="https://anti-captcha.com/uk/apidoc/articles/how-to-integrate-the-plugin">
17<link rel="alternate" hreflang="ru" href="https://anti-captcha.com/ru/apidoc/articles/how-to-integrate-the-plugin">
18<link rel="alternate" hreflang="tr" href="https://anti-captcha.com/tr/apidoc/articles/how-to-integrate-the-plugin">
19<link rel="alternate" hreflang="ar" href="https://anti-captcha.com/ar/apidoc/articles/how-to-integrate-the-plugin">
20<link rel="alternate" hreflang="fa" href="https://anti-captcha.com/fa/apidoc/articles/how-to-integrate-the-plugin">
21<link rel="alternate" hreflang="ur" href="https://anti-captcha.com/ur/apidoc/articles/how-to-integrate-the-plugin">
22<link rel="alternate" hreflang="hi" href="https://anti-captcha.com/hi/apidoc/articles/how-to-integrate-the-plugin">
23<link rel="alternate" hreflang="bn" href="https://anti-captcha.com/bn/apidoc/articles/how-to-integrate-the-plugin">
24<link rel="alternate" hreflang="vi" href="https://anti-captcha.com/vi/apidoc/articles/how-to-integrate-the-plugin">
25<link rel="alternate" hreflang="th" href="https://anti-captcha.com/th/apidoc/articles/how-to-integrate-the-plugin">
26<link rel="alternate" hreflang="id" href="https://anti-captcha.com/id/apidoc/articles/how-to-integrate-the-plugin">
27<link rel="alternate" hreflang="fil" href="https://anti-captcha.com/fil/apidoc/articles/how-to-integrate-the-plugin">
28<link rel="alternate" hreflang="zh" href="https://anti-captcha.com/zh/apidoc/articles/how-to-integrate-the-plugin">
29<link rel="alternate" hreflang="ko" href="https://anti-captcha.com/ko/apidoc/articles/how-to-integrate-the-plugin">
30<link rel="alternate" hreflang="ja" href="https://anti-captcha.com/ja/apidoc/articles/how-to-integrate-the-plugin">
31<link rel="canonical" href="https://anti-captcha.com/apidoc/articles/how-to-integrate-the-plugin">
32<meta name="language" content="English">
33<meta property="og:locale" content="en_US">
34<meta property="og:image" content="https://anti-captcha.com/images/og-preview.webp">
35<meta property="og:type" content="article">
36<style>@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/1ncK5V-Ao63zSoIyXYSVppliiHEY4-jcdrPgUa-Cse8-KToRNBvc6bTmtIHX1UKYdc1Ms6JalcJNPhry01cN9gg.woff2) format(woff2);font-display:swap;
36unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/X6obMMmogE8OjNFcgw5B6Ctfn5HFTengRSQLg3QopjI-vSImlLYzjc_94Ku7afBkFkm6ns0QuyBd0VcFbuOoyhw.woff2) format(woff2);font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-weight:400;font-style:normal;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/1CmaTNkB_vQFgHvcivNH32PUOlduclGJTISAkR8_2t4-bz5JkmytIbBjtTDbydcesDgeIaCOZmE6JamweR53Ko8.woff2) format(woff2);font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400;font-style:normal;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/p8_iMj97syiW7pNs08i7aDRTIfYXsn1aLaa2V5sHVE0-30kvGaRnl_dS_5qphm8F9WaWwKXf5ZuXk-R9UUCI5MQ.woff2) format(woff2);font-display:swap;
36unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/byHu6vCp4AwuwTuO0iQyVSYQuRWpsmQbJSU1afUFyRA-pWgEqOsXe0t46_DGNV1yRdBksk_z4LufgcYdHWce7HI.woff2) format(woff2);font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/z_CEXUFdVdC6nIuMLjyPDa2X6euKbN3i8jr3NqKTXjI-lKbde7b9ewwj6UBrWan1Ub6HKM4eR_bLAEqh468TS0o.woff2) format(woff2);font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:"Open Sans Fallback: BlinkMacSystemFont";src:local("BlinkMacSystemFont");size-adjust:112.544%;ascent-override:94.9716%;descent-override:26.0315%;line-gap-override:0%}@font-face{font-family:"Open Sans Fallback: Segoe UI";src:local("Segoe UI");size-adjust:105.7269%;ascent-override:101.0952%;descent-override:27.71%;line-gap-override:0%}@font-face{font-family:"Open Sans Fallback: Helvetica Neue";src:local("Helvetica Neue");size-adjust:104.1667%;ascent-override:102.6094%;descent-override:28.125%;line-gap-override:0%}@font-face{font-family:"Open Sans Fallback: Arial";src:local("Arial");size-adjust:105.1479%;ascent-override:101.6519%;descent-override:27.8625%;line-gap-override:0%}@font-face{font-family:"Open Sans Fallback: Noto Sans";src:local("Noto Sans");size-adjust:98.8924%;ascent-override:108.0819%;descent-override:29.625%;line-gap-override:0%}@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/oi2ElsDLdSn_dVsXQXLHEYIkWffkO22Hb_Un56ori-8-TOPSmAk24DzUGbbpULinv64ZGd4oG32z5dj4RsdZQy0.woff2) format(woff2);font-display:swap;
36unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/qORAfXsQPClhWE1NxIyze-06Gm7nZywbMjQws2ULVNA-wjjXDIadeB_-nixfR_H6UV-PQk8UUDQIlvNNbuYk1-s.woff2) format(woff2);font-display:swap;unicode-range:U+1F00-1FFF;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/cVeVvUlAOwbrfJrj7_ffErX48lhVUgVmQMuxMi7S3-g-IdeUxnc5tMmgKD6Nlc8KskWiHg6cr8oNy9BZ1fIQ5vI.woff2) format(woff2);font-display:swap;unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/QbnGxyU-0ZN5Y47E3afvEhnJDBpR0S0s2n3P0O-TKdE-ifIsJJMZqNvDyWu7WnPDMv8MzVnrOI8_J0Nd2LH15M0.woff2) format(woff2);font-display:swap;
36unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular Italic"),local("Open Sans Italic"),url(/_fonts/qFmcDCEqdYt4eE47FX40P7UT5A2H8kukMt0PESt9eaA-M2u67Il0JTR3DgIJlwq6M1Pm0KUHylL_fYPOpNWlVQo.woff2) format(woff2);font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/AtEdxPQRuE3zk5bIwe-u1SbFeDxyW2ncRSEMP-2hmA8-B6hvTUV9IDqh_4AxBpzN8SccaTE8NMLPuziWauqEyaY.woff2) format(woff2);font-display:swap;unicode-range:U+1F00-1FFF;font-weight:400;font-style:normal;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/DfpyppQ_vN017vtsTJ9mCXr1dI9OEmcU9nXWqSWiI5c-0ST398yS9wLE0T3Vg9BjxWjcw4u_8oyDmSsXudQsQAk.woff2) format(woff2);font-display:swap;
36unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-weight:400;font-style:normal;font-stretch:100%}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("Open Sans"),url(/_fonts/5OTXZ4M8NqKHmf3vznUpTBulrQMATUZV6lUfBehj6Rw-HxPzBaDMYcoM_heoB9jDgrgSWq2QeXBEKwaFv3-0drg.woff2) format(woff2);font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal;font-stretch:100%}*{box-sizing:border-box}body{background-color:#1e2d4b;color:#000;font-family:Open Sans,"Open Sans Fallback: BlinkMacSystemFont","Open Sans Fallback: Segoe UI","Open Sans Fallback: Helvetica Neue","Open Sans Fallback: Arial","Open Sans Fallback: Noto Sans",sans-serif;margin:0;min-height:100vh;padding:0}a{color:#266bd2}a:hover{text-decoration:none}a:visited{color:#4e2186}.nowrap{white-space:nowrap}.div8{height:8px;width:8px}.tac{text-align:center}.tal{text-align:left}.w100p{width:100%}.dib{display:inline-block}.df,.hbox{display:flex}.alic{align-items:center}.gap32{gap:32px}.gap4{gap:4px}.ptop10{padding-top:10px}.arrow-up{transform:rotate(-90deg)}.dash-link{border-bottom:1px dotted;cursor:pointer;text-decoration:none}.dash-link:hover{border-bottom:0}.inp-dft-landing{background-color:#fff;border:2px solid #477ed2;border-radius:0;box-shadow:inset 0 2px 1px #0000001c;padding:8px 5px!important;transition:border-color .3s}.btn,.inp-dft-landing{font-family:Open Sans,"Open Sans Fallback: BlinkMacSystemFont","Open Sans Fallback: Segoe UI","Open Sans Fallback: Helvetica Neue","Open Sans Fallback: Arial","Open Sans Fallback: Noto Sans",sans-serif;font-size:1em;margin:0;vertical-align:middle}.btn{align-items:center;background:none;border-color:transparent;border-radius:2px;border-width:1px;cursor:pointer;display:inline-block;font-weight:600;line-height:1.2;outline:none;padding:.625em 1.25em;text-align:center;text-decoration:none;z-index:1}.btn img+.label{padding-left:4px}.btn.btn-disabled{background-color:#ccc!important;border-color:#a6a6a6!important;box-shadow:0 1px #fff;color:#999;cursor:default!important;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.btn-primary{background-color:#477ed2;border:1px solid #2d64b9;color:#fff!important}.btn-default,.btn-primary{box-shadow:inset 0 1px #ffffff80}.btn-default{background-color:#e6e6e6;border:1px solid #acacac;color:#000}.btn-cta{background-color:#f7cf1f;border-radius:8px;color:#122c3f!important;padding:10px 16px}.btn-cta:hover{background-color:#ffe77b;color:#122c3f}.margintop20{margin-top:20px!important}.table-docs{font-size:14px;font-style:normal;font-weight:400;line-height:1.4285714286;-webkit-text-decoration-skip:ink;background:#fff;border-collapse:collapse;color:#091e42;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Droid Sans,Helvetica Neue,sans-serif;margin:0;overflow-x:auto;padding:0;text-decoration-skip-ink:auto;width:auto}.table-docs th{background-color:#f0f0f0;border:1px solid #ddd;color:#172b4d;font-weight:700;padding:7px 10px;text-align:left}.rtl .table-docs th{text-align:right}.table-docs td{border:1px solid #ddd;min-width:8px;padding:7px 10px;padding-left:10px!important;vertical-align:top}.code{padding:0;width:100%}.code,.line{background:0;border:0;border-collapse:collapse;bottom:auto;box-sizing:content-box;color:#333;float:none;font-family:Consolas,Bitstream Vera Sans Mono,Courier New,Courier,monospace;font-size:14px;font-style:normal;font-weight:400;height:auto;left:auto;line-height:20px;margin:0;min-height:inherit;outline:0;overflow:visible;position:static;right:auto;text-align:left;top:auto;vertical-align:baseline}.line{background-color:#0f192a!important;padding:0 1em 0 0;white-space:nowrap;width:auto}.codeContent,.example-code{display:grid;grid-template-columns:1fr;overflow:hidden;position:relative}td>.codeContent,td>.example-code{margin-top:8px}.codeContent>div,.example-code>div{background:#282c34;border-radius:3px;overflow:auto}.exolink:after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEnSURBVHgBtVNRTsJAEJ1Z16R/coR6g2pSQqiJegL1BOCfEUy4gXgC
36a9L67w30BNYP2oT64RU8AfsNgWG2tKSUFNoPXtLs7HTf7MzsG4QaaD1EZmYbhqEC90xhVbLTj795ucq51LGUp6JqAD58DwK7bP6lrsZ0RidJBk4vHhDCJW8aedKC5l+R33Kz/UU/HhLAcxrEIjoyRftp3AWEVyabxVsFyEmRzN+QkN4yv0TCDq/ByLOvoQR5cujZL+3HsUUCPkP//F/CHhTJ2he+N3UJd6ssa5K3y6xB1s12er+d/LnSEohALZAGkddcN4ybfcN/tPWxN8DIt12ogMpCOlwArkhBQYF1wEKCH27ObTosu6AvsYCSeVgjmQUt51SRpdCZElCw8SqMJdwOcXNIxKwlAAAAAElFTkSuQmCC);margin-left:4px;vertical-align:middle}.page-content h1{font-size:24px}.page-content h2{color:#555;font-size:20px}.page-content h3{color:#555;font-size:16px;font-weight:700;margin-bottom:8px}.page-content h3+p{margin-top:0}.faq-list .desc code{background-color:#c8e2f1;border-radius:3px;box-shadow:0 .7px .5px #72a6c3;display:block;font-family:monospace;font-size:14px;line-height:1.4;padding:8px}.item .desc img{max-width:100%}.btn .icon{fill:currentColor;transition:fill .2s;vertical-align:text-top}.btn .label{vertical-align:middle}.btn .icon+.label{margin-left:3px}.btn.small{font-size:.75rem;padding:3px 6px}svg.icon{display:inline-block;fill:currentColor;height:1.5em;vertical-align:middle;width:1.5em}svg.icon.db{display:block}svg.icon.w100p{height:auto;width:100%}svg.icon.arrow-left{transform:scaleX(-1)}svg.icon.arrow-top{transform:rotate(-90deg)}svg.icon.arrow-bottom{transform:rotate(90deg)}svg.icon.thumb-up{transform:scaleY(-1)}svg.icon.icon-16{height:16px;width:16px}.rtl .pop4+div,.rtl .poplayer,.rtl .tablos{direction:ltr}.rtl{direction:rtl}.rtl .hero-right img{transform:scaleX(-1) translate(-50px)}.rtl .menu .menu-icon{margin-left:8px;margin-right:0}.rtl .check-wrap label .faked-control{margin-left:.25rem;margin-right:0}.rtl .your-captchas .filters .title>:first-child{margin-left:10px;margin-right:0}.rtl .feature-title:before{margin-left:0;margin-right:-40px}.rtl .searchbar-wrap label .icon{left:auto;right:6px}.rtl .heroimg{margin-right:0!important}.rtl .login-button:before{margin:0 0 0 10px!important;position:static!important;vertical-align:middle}.rtl .docs-content .page-content{border-radius:8px 0 0 8px}.rtl .docs-content .pages-list{border-radius:0 8px 8px 0}.rtl .docs-content .grid .col-left{padding-right:16px}.lp-wrap{background-color:#1e2d4b;color:#fff;min-height:100vh;overflow:hidden}.lp-wrap a{color:#5491e3}.error-msg{color:#fff;font-size:12px;padding:0 4px 2px}
37</style><link rel="stylesheet" href="/_nuxt/entry.9827f5b6.css" type="text/x-inlined">
38<style>.tutorial-link{margin:-10px 0 10px}.subfolder{padding-left:15px;padding-top:8px}.ptop10{padding-top:10px}.table-grid{display:table}.table-cell{display:table-cell}.mobile-apidoc-menu{display:none;margin-bottom:16px}.mobile-apidoc-menu .col-icon img{width:30px}.method-link{font-size:16px}.example{padding:30px 0}.example:last-child{border-radius:0 0 5px 5px}.example:nth-child(2){border-top:1px solid #ccc}.example-title{color:#666;font-size:22px;margin-bottom:25px;position:relative;text-align:center;z-index:1}.example-title select{font-size:18px;vertical-align:middle}.example-title .method-highlight{color:#000}.method-description{color:#666;flex:1;font-size:14px;margin-bottom:20px;padding:0 60px;text-align:left}.example-content{padding:0 30px;position:relative}.example-content .method-arrow{bottom:48px;left:50%;margin-left:-140px;position:absolute}.example-content .code-side-icon img{vertical-align:middle}.example-content .side-label{display:inline-block;vertical-align:middle}.example-content .code-pointer{align-self:center;margin-bottom:-16px;vertical-align:middle}.example-content .api-response,.example-content .app-request{flex-direction:column;justify-content:flex-end;margin:0 30px}.example-content .app-request .code-side-icon{margin-left:10px}.example-content .app-request .code-pointer{margin-left:17px}.example-content .api-response{margin-top:50px;text-align:right}.example-content .api-response .code-side-icon{margin-right:10px}.example-content .api-response .code-pointer{margin-right:17px}.example-code{background-color:#282c34;border-radius:5px;color:#fff;font-size:12px;margin-top:-5px;overflow:auto;text-align:left;white-space:nowrap}.apidoc-footer{height:300px;margin-top:-137px}.streaks{left:50%;position:absolute;transform:translate(-50%);width:1695px}.docs-content{display:flex;margin:32px auto 0;max-width:1400px;min-height:calc(100vh - 148px);position:relative;z-index:2}.docs-content .head{color:#fff;padding:16px 24px}.col-pages-list{display:flex;flex-basis:340px;flex-direction:column;flex-shrink:0}.col-pages-list .head{background-color:#4567a6;border-radius:10px 0 0}.col-page-content{display:flex;flex:1;flex-direction:column}.col-page-content .head{background-color:#335c99;border-radius:0 10px 0 0}.col-page-content .head a{color:#fff}.pages-list{background-color:#dcdee0;border-radius:8px 0 0 8px;flex:1;padding:16px 24px}.page-folder{font-size:18px;margin-bottom:4px;margin-top:24px}.page-folder:first-child{margin-top:0}.page-content{background-color:#ebedf0;border-radius:0 8px 8px 0;flex:1;padding:16px 24px}.documentation,.faq,.impaired,.tutorials{background-image:url(/_nuxt/isogrid-pattern.fa1d7cb7.png),linear-gradient(153.31deg,#223e67 1.83%,#14243b 71.58%,#203b62);min-height:100vh;position:relative}.github{color:#fff;display:flex;font-size:14px;justify-content:center;margin:30px auto}.github .inner{align-items:center;background-color:#335c99;border:2px solid #fff;border-radius:4px;display:flex;padding:14px 16px}.github a{color:#fff;margin-left:16px}.github .col-icon{margin-right:8px}.github img{vertical-align:middle}.github span{font-size:16px;font-weight:700}.mobile-close{display:none}@media (max-width:732px){.col-page-content{background-color:#ebedf0;overflow:auto}.mobile-apidoc-menu{align-items:center;background:#335c99;border-radius:4px;color:#fff;display:inline-flex;padding:4px 16px 4px 8px}.mobile-apidoc-menu .col-icon{margin-right:8px}.mobile-apidoc-menu img{vertical-align:middle}.docs-content{margin:50px 0}.col-pages-list{position:absolute;transform:translate(-100%);transition:transform .2s;z-index:2}.col-pages-list.active{transform:translate(0)}.col-pages-list .mobile-close{display:block;padding:16px;position:absolute;right:20px;top:0}.col-pages-list .mobile-close img{width:30px}.pages-list{border-radius:0 0 8px;box-shadow:0 6px 20px #00000012;position:relative}.page-content{border-radius:0}}@media (max-width:740px){.page-content{padding:16px 8px}h1{font-size:24px}.example-content .api-response,.example-content .app-request{margin:24px 0 0}.example-content .example-code{max-width:calc(100vw - 48px)}.example-content,.method-description{padding-left:0;padding-right:0}.example-content .app-request{margin-left:0;margin-right:0}}
39</style><link rel="stylesheet" href="/_nuxt/default.002852db.css" type="text/x-inlined">
40<style>.login-item[data-v-4f26d3f8]{color:#6ac9ff!important;
40max-width:200px;overflow:hidden}.mobilemenu[data-v-4f26d3f8]{display:none}@media (max-width:830px){.mobilemenu[data-v-4f26d3f8]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIHSURBVHgB7ZmBdcIgEIYvnUA3wA0cwW7QDUwnqBuYDeoIblIncITGCawThEI9+yg9yEWTSOJ97/HCg/8C/wNOXgQQBEEQBEEQBKEX9H8WjJjcD/L6M30dFXQNMegHI6ZMxfAT3M7CDLwKdZq+tXkoSIQMGuKvDnIyZZZl2cnTKvMoqfcYbebobP2a7anNa9pYtMgIYQpCuw2JYSjoOMrRzWNCuBNtbekLO7PFnlFnt7IKCe+1pdvY/zunbhOYLTn8NbuFRGhjhe2Kuj9NB3wqp20GXvIabNLCtk3kuG5Ccc47h3PxwLaJKV/EhEqNiYyKGwShiZtqQRhe1sX1zc1n2DuLbmY+mK4ZM25QWdrl1akXkCCtrvC1cUNeYUEQHhR9vm1xEyBb69M4aRGXi4Jzj4hdPJwsXWF3FXhHhrEX7V2+abFM1xn2uqOG63StosNETY/RcNT0WA0HTY/J8JFjekyG5xzTozGMbbWmqbimRnQqhrH9xU6AMJ1bWSguZETTeSAdw9iX67DppoYnnsaWaVKGIW66znDpSX6Og1OsZuVp9tA1sYk3Me3pqW9iFRqcYqH636FrYhP3dKuGhq2po+ZjtQq6JjZxQltwDKOWfRxQ8wZ9UDdxQk+aDmgvpj8jRu3KLqEvcNDfwowpuHFoWunzvxl7x6Str7WXvQVBEARBEARB6IdviYVHKrBYiTwAAAAASUVORK5CYII=);background-position:50%;background-repeat:no-repeat;background-size:30px 30px;display:block;height:30px;width:30px}.mobmenu-wrap[data-v-4f26d3f8]{background:#111d35;border-radius:8px;box-shadow:0 16px 20px #0006;display:none;left:0;padding:8px 0;position:absolute;right:0;text-align:left;top:65px}.mobmenu-wrap.active[data-v-4f26d3f8],.nav-item[data-v-4f26d3f8]{display:block}.nav-item[data-v-4f26d3f8]{color:#fff;font-size:18px;padding:16px;text-decoration:none}}.login-item[data-v-69e3e417]{color:#6ac9ff!important;max-width:200px;overflow:hidden}.logout[data-v-69e3e417]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAABGdBTUEAALGPC/xhBQAAAJlJREFUOBGtlNENgCAMRIkfbsBUbuIkDugKuka9E0qCsQWiTS5ouT5qrAYRmaENOiEzgheoIqAZHiOgWjtYXKO3qS14Ht2Dd4Wi3pe1F5IBtO9QDWKWUajGBSwRIoBRg1KuDSEb3neQBdF8Y707mozux9J6Uk8VvGOP84SaABp7O4GPM8Ko38wIJHvNYTvSAfJp7H/5AD//Ci6yz5S8COM38wAAAABJRU5ErkJggg==);background-position:50%;background-repeat:no-repeat;background-size:15px 15px;cursor:pointer;display:block;height:15px;width:15px}.nav-header-wrap[data-v-69e3e417]{padding-top:22px}.nav-header[data-v-69e3e417]{align-items:center;background-color:#111d35;border-radius:8px;display:flex;font-size:18px;justify-content:space-between;margin:0 28px;padding:16px 28px;position:relative;z-index:11}.nav-header img[data-v-69e3e417]{vertical-align:middle}.nav-item[data-v-69e3e417]{color:#ffffffb3;font-weight:500;text-decoration:none}.nav-item[data-v-69e3e417]:hover{color:#fff}.nav-item.nuxt-link-exact-active[data-v-69e3e417]{color:#6fedd6}.register[data-v-69e3e417]{padding:6px 16px}.side[data-v-69e3e417],nav[data-v-69e3e417]{align-items:center;display:flex;gap:24px}.nav-logo[data-v-69e3e417]{margin-right:24px}@media (max-width:830px){.side a[data-v-69e3e417],nav a[data-v-69e3e417]:nth-child(n+2){display:none}.nav-header[data-v-69e3e417]{margin:0 22px}.logout[data-v-69e3e417]{display:none}}
41</style><link rel="stylesheet" href="/_nuxt/NavHeader.7f9e860a.css" type="text/x-inlined">
42<style>.panel[data-v-48f6cf02]{position:relative;text-align:center;z-index:3}.panel .selected[data-v-48f6cf02]{margin-top:3px;scale:.85}.panel .selection-box[data-v-48f6cf02]{background-color:#fff;box-shadow:0 4px 37.2px #00000017;color:#000;right:4px;top:30px}.panel .selection-box .language[data-v-48f6cf02]:hover{background-color:#00000040}.panel .selection-box[data-v-48f6cf02]:before{background-color:#fff;content:"";height:10px;position:absolute;right:10px;transform:rotate(45deg) translateY(-5px);width:10px}.panel .lang-item[data-v-48f6cf02]:hover{background-color:#edf8ff}.entrance[data-v-48f6cf02]{text-align:center;z-index:3}.entrance .selected[data-v-48f6cf02]{position:absolute;right:-30px;scale:.85;top:-70px}.entrance .selection-box[data-v-48f6cf02]{background-color:#fff;color:#000;right:-26px;top:-40px}.entrance .selection-box .language[data-v-48f6cf02]:hover{background-color:#00000040}.entrance .selection-box[data-v-48f6cf02]:before{background-color:#fff;content:"";height:10px;position:absolute;right:10px;transform:rotate(45deg) translateY(-5px);width:10px}.entrance .lang-item[data-v-48f6cf02]:hover{background-color:#edf8ff}@media (prefers-color-scheme:dark){.entrance .selection-box[data-v-48f6cf02],.panel .selection-box[data-v-48f6cf02]{background:#535c6e;color:#fff}.entrance .selection-box[data-v-48f6cf02]:before,.panel .selection-box[data-v-48f6cf02]:before{background:#535c6e}.panel .lang-item[data-v-48f6cf02]:hover{color:#000}}@media screen and (max-width:767px){.entrance .selected[data-v-48f6cf02],.panel .selected[data-v-48f6cf02]{right:0}.entrance .selection-box[data-v-48f6cf02]:before,.panel .selection-box[data-v-48f6cf02]:before{display:none}}.item-lang-name[data-v-48f6cf02],.item-lang-name[data-v-48f6cf02]:active,.item-lang-name[data-v-48f6cf02]:hover,.item-lang-name[data-v-48f6cf02]:visited{text-decoration:none}.item-lang-name[data-v-48f6cf02]{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.language-select[data-v-48f6cf02]{align-items:center;display:flex}.language-select .selection-box[data-v-48f6cf02]{right:0;top:60px}.lang-item[data-v-48f6cf02]{align-items:center;cursor:pointer;display:flex;gap:8px;padding:8px 16px;text-decoration:none}.lang-item[data-v-48f6cf02]:hover{background-color:#22395e}.lang-item[data-v-48f6cf02]:first-child{border-radius:6px 0 0}.lang-item[data-v-48f6cf02]:nth-child(2){border-radius:0 6px 0 0}.lang-item[data-v-48f6cf02]:nth-child(23){border-radius:0 0 0 6px}.lang-item[data-v-48f6cf02]:last-child{border-radius:0 0 6px}.item-flag img[data-v-48f6cf02]{display:block;width:30px}.selected[data-v-48f6cf02]{box-shadow:0 0 4px #000;cursor:pointer;height:22px;scale:.73;
42transition:box-shadow .2s;vertical-align:middle;width:30px}.selected[data-v-48f6cf02]:hover{box-shadow:0 0 4px 1px #6ac9ff}.selection-box[data-v-48f6cf02]{background-color:#111d35;border-radius:6px;color:#fff;display:grid;grid-template-columns:1fr 1fr;opacity:1;position:absolute;transition:all .2s;visibility:visible;z-index:100}.selection-box.lang-hidden[data-v-48f6cf02]{opacity:0;visibility:hidden}@media (max-width:740px){.language-select[data-v-48f6cf02]{margin-left:auto}.selection-box[data-v-48f6cf02]{box-shadow:0 6px 20px #000000b3;margin-left:0;padding:8px 0;right:0}}.flag[data-v-48f6cf02]{background:url(/_nuxt/flag_sprite_normal.75830cbf.png) no-repeat 0 0;height:20px;width:30px}.flag.ar[data-v-48f6cf02]{background-position:0 1px}.flag.bn[data-v-48f6cf02]{background-position:0 -20px}.flag.pt[data-v-48f6cf02]{background-position:0 -41px}.flag.de[data-v-48f6cf02]{background-position:0 -62px}.flag.en[data-v-48f6cf02]{background-position:0 -83px}.flag.es[data-v-48f6cf02]{background-position:0 -104px}.flag.fa[data-v-48f6cf02]{background-position:0 -125px}.flag.fil[data-v-48f6cf02]{background-position:0 -146px}.flag.fr[data-v-48f6cf02]{background-position:0 -167px}.flag.hi[data-v-48f6cf02]{background-position:0 -188px}.flag.id[data-v-48f6cf02]{background-position:0 -209px}.flag.it[data-v-48f6cf02]{background-position:0 -230px}.flag.ja[data-v-48f6cf02]{background-position:0 -251px}.flag.ko[data-v-48f6cf02]{background-position:0 -272px}.flag.nl[data-v-48f6cf02]{background-position:0 -293px}.flag.pl[data-v-48f6cf02]{background-position:0 -314px}.flag.ru[data-v-48f6cf02]{background-position:0 -356px}.flag.sv[data-v-48f6cf02]{background-position:0 -377px}.flag.th[data-v-48f6cf02]{background-position:0 -398px}.flag.tr[data-v-48f6cf02]{background-position:0 -419px}.flag.uk[data-v-48f6cf02]{background-position:0 -440px}.flag.ur[data-v-48f6cf02]{background-position:0 -461px}.flag.vi[data-v-48f6cf02]{background-position:0 -482px}.flag.zh[data-v-48f6cf02]{background-position:0 -503px}@media (min-resolution:192dpi){.flag[data-v-48f6cf02]{background:url(/_nuxt/flag_sprite_retina.3ebaa0c6.png) no-repeat 0 0;background-size:30px 525px}}
43</style><link rel="stylesheet" href="/_nuxt/LanguageSelect.44f8964c.css" type="text/x-inlined">
44<style>.page-link[data-v-1e39db13]{align-items:center;display:flex;padding:6px 0}.page-link .bullet-col[data-v-1e39db13]{margin-right:8px}a[data-v-1e39db13]{color:#212121;text-decoration:none}.router-link-exact-active[data-v-1e39db13]{color:#0038ff;font-weight:700;text-decoration:none}
45</style><link rel="stylesheet" href="/_nuxt/DocPageLink.8ccbdbdc.css" type="text/x-inlined">
46<style>.img[data-v-72a7208e]{max-width:100%}.inline-highlight[data-v-72a7208e]{background:#ccc;padding:0 4px}
47</style><link rel="stylesheet" href="/_nuxt/how-to-integrate-the-plugin.544a3f2b.css" type="text/x-inlined">
48<style>.example-code .tabs-list{display:flex}.example-code .tabs-list .tab-title{background-color:#ffffff1a;cursor:pointer;font-size:14px;margin-right:-2px;padding:5px 10px;transition:border-width .2s linear}.example-code .tabs-list .tab-title.active{background-color:#282c34;border-bottom:1px solid hsla(0,0%,100%,.44);color:#fff;transition:background .2s linear}.example-code code,.example-code pre{margin:0;padding:0}.example-code .body{direction:ltr!important;font-size:14px;padding:15px}.hljs{background:#282c34;color:#abb2bf}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
49</style><link rel="stylesheet" href="/_nuxt/SourceTabs.dfc5a7e9.css" type="text/x-inlined">
50<style>.example-code .copy-code[data-v-f4723e5d]{align-items:center;background:#282c34;border:1px solid hsla(0,0%,100%,.2);border-radius:3px;color:#bbb;cursor:pointer;display:flex;font-size:12px;gap:4px;line-height:16px;padding:3px 8px;position:absolute;right:8px;top:8px;transition:color .2s,border-color .2s;z-index:1}.example-code .copy-code[data-v-f4723e5d]:hover{border-color:#ffffff80;color:#fff}.example-code .copy-code[data-v-f4723e5d] svg{fill:currentColor;height:14px;margin-bottom:0;width:14px}.example-code code[data-v-f4723e5d],.example-code pre[data-v-f4723e5d]{margin:0;padding:0;white-space:pre-wrap}.example-code .body[data-v-f4723e5d]{direction:ltr!important;font-size:14px;padding:15px 10px;position:relative}.hljs[data-v-f4723e5d]{background:#282c34;
50color:#abb2bf}.hljs-comment[data-v-f4723e5d],.hljs-quote[data-v-f4723e5d]{color:#5c6370;font-style:italic}.hljs-doctag[data-v-f4723e5d],.hljs-formula[data-v-f4723e5d],.hljs-keyword[data-v-f4723e5d]{color:#c678dd}.hljs-deletion[data-v-f4723e5d],.hljs-name[data-v-f4723e5d],.hljs-section[data-v-f4723e5d],.hljs-selector-tag[data-v-f4723e5d],.hljs-subst[data-v-f4723e5d]{color:#e06c75}.hljs-literal[data-v-f4723e5d]{color:#56b6c2}.hljs-addition[data-v-f4723e5d],.hljs-attribute[data-v-f4723e5d],.hljs-meta .hljs-string[data-v-f4723e5d],.hljs-regexp[data-v-f4723e5d],.hljs-string[data-v-f4723e5d]{color:#98c379}.hljs-attr[data-v-f4723e5d],.hljs-number[data-v-f4723e5d],.hljs-selector-attr[data-v-f4723e5d],.hljs-selector-class[data-v-f4723e5d],.hljs-selector-pseudo[data-v-f4723e5d],.hljs-template-variable[data-v-f4723e5d],.hljs-type[data-v-f4723e5d],.hljs-variable[data-v-f4723e5d]{color:#d19a66}.hljs-bullet[data-v-f4723e5d],.hljs-link[data-v-f4723e5d],.hljs-meta[data-v-f4723e5d],.hljs-selector-id[data-v-f4723e5d],.hljs-symbol[data-v-f4723e5d],.hljs-title[data-v-f4723e5d]{color:#61aeee}.hljs-built_in[data-v-f4723e5d],.hljs-class .hljs-title[data-v-f4723e5d],.hljs-title.class_[data-v-f4723e5d]{color:#e6c07b}.hljs-emphasis[data-v-f4723e5d]{font-style:italic}.hljs-strong[data-v-f4723e5d]{font-weight:700}.hljs-link[data-v-f4723e5d]{text-decoration:underline}
51</style><link rel="stylesheet" href="/_nuxt/SourceCode.e88cdd39.css" type="text/x-inlined">
52<style>.nuxt-icon svg{height:1em;margin-bottom:.125em;vertical-align:middle;width:1em}.nuxt-icon.nuxt-icon--fill,.nuxt-icon.nuxt-icon--fill *{fill:currentColor!important}.nuxt-icon.nuxt-icon--stroke,.nuxt-icon.nuxt-icon--stroke *{stroke:currentColor!important}
53</style><link rel="stylesheet" href="/_nuxt/nuxt-icon.4544dae2.css" type="text/x-inlined">
54<style>.example-code-with-titles[data-v-ed59ce05]{display:grid;grid-template-columns:1fr;margin-top:10px;overflow:hidden;position:relative}td>.example-code-with-titles[data-v-ed59ce05]{margin-top:8px}.example-code-with-titles>div[data-v-ed59ce05]{background:#282c34;border-radius:3px;overflow:auto}.source-tabs-static .source-tabs-title[data-v-ed59ce05]{font-size:18px;font-weight:600;margin:-50px 0 10px;position:absolute}.source-tabs-static .tabs-list[data-v-ed59ce05]{display:flex}.source-tabs-static .tabs-list.has-titles[data-v-ed59ce05]{margin-top:20px}.source-tabs-static .tabs-list .tab-title[data-v-ed59ce05]{background-color:#ffffff1a;color:#bbb;cursor:pointer;font-size:14px;margin-right:-2px;padding:5px 10px;transition:border-width .2s linear}.source-tabs-static .tabs-list .tab-title.active[data-v-ed59ce05]{background-color:#282c34;border-bottom:1px solid hsla(0,0%,100%,.44);color:#fff;transition:background .2s linear}.source-tabs-static>.body[data-v-ed59ce05]{padding:0}
55</style><link rel="stylesheet" href="/_nuxt/SourceTabsStatic.2a273ee6.css" type="text/x-inlined">
56<link rel="modulepreload" as="script" crossorigin href="/_nuxt/entry.51d5b899.js">
57<link rel="modulepreload" as="script" crossorigin href="/_nuxt/tutorials.615a864c.js">
58<link rel="modulepreload" as="script" crossorigin href="/_nuxt/NavHeader.bb1dc977.js">
59<link rel="modulepreload" as="script" crossorigin href="/_nuxt/nuxt-link.f985b5c2.js">
60<link rel="modulepreload" as="script" crossorigin href="/_nuxt/LanguageSelect.8d12a376.js">
61<link rel="modulepreload" as="script" crossorigin href="/_nuxt/vue-i18n.runtime.4dbdeff2.js">
62<link rel="modulepreload" as="script" crossorigin href="/_nuxt/language.1198f6fa.js">
63<link rel="modulepreload" as="script" crossorigin href="/_nuxt/composables.d3ffa1d3.js">
64<link rel="modulepreload" as="script" crossorigin href="/_nuxt/forms.6fe0f7ba.js">
65<link rel="modulepreload" as="script" crossorigin href="/_nuxt/customerapi.134c496e.js">
66<link rel="modulepreload" as="script" crossorigin href="/_nuxt/_commonjsHelpers.de833af9.js">
67<link rel="modulepreload" as="script" crossorigin href="/_nuxt/global.e6af96d0.js">
68<link rel="modulepreload" as="script" crossorigin href="/_nuxt/menu.ab279987.js">
69<link rel="modulepreload" as="script" crossorigin href="/_nuxt/vue.-sixQ7xP.5ec1e524.js">
70<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DocPageLink.346ad0d3.js">
71<link rel="modulepreload" as="script" crossorigin href="/_nuxt/how-to-integrate-the-plugin.85abdaee.js">
72<link rel="modulepreload" as="script" crossorigin href="/_nuxt/SourceCode.37422075.js">
73<link rel="modulepreload" as="script" crossorigin href="/_nuxt/nuxt-icon.vue.dd657284.js">
74<link rel="modulepreload" as="script" crossorigin href="/_nuxt/xml.ecf82975.js">
75<link rel="modulepreload" as="script" crossorigin href="/_nuxt/kotlin.396f27c2.js">
76<link rel="modulepreload" as="script" crossorigin href="/_nuxt/SourceTabsStatic.fe85f73d.js">
77<link rel="modulepreload" as="script" crossorigin href="/_nuxt/nuxt-icon.0bfab04e.js">
78<script type="module" src="/_nuxt/entry.51d5b899.js" crossorigin></script>
78</head>
79<body ><div id="__nuxt"><div class="tutorials"><div class="nav-header-wrap" data-v-69e3e417><div class="nav-header" data-v-69e3e417><nav data-v-69e3e417><a href="/" class="nav-logo" data-v-69e3e417><img src="/_nuxt/logo.108c78f7.svg" width="78" height="23" alt="logo" data-v-69e3e417></a> <a href="/" class="nav-item" data-v-69e3e417>Home</a> <a href="/apidoc" class="nav-item" data-v-69e3e417>Documentation</a> <a href="/tutorials" class="nuxt-link-exact-active selected-item nav-item" data-v-69e3e417>Tutorials</a></nav> <div class="side" data-v-69e3e417><div class="language-select" data-v-69e3e417 data-v-48f6cf02><div class="en selected flag" data-v-48f6cf02></div> <div class="lang-hidden selection-box" data-v-48f6cf02><!--[--><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag en" alt="English" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>English</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag sv" alt="Svenska" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Svenska</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag pt" alt="Brasileiro" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Brasileiro</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag fr" alt="Française" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Française</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag nl" alt="Nederlands" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Nederlands</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag es" alt="Español" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Español</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag de" alt="Deutsch" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Deutsch</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag it" alt="Italiano" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Italiano</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag pl" alt="Polski" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Polski</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag uk" alt="Українська" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Українська</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag ru" alt="Русский" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Русский</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag tr" alt="Türkçe" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Türkçe</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag ar" alt="عربى" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>عربى</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag fa" alt="فارسی" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>فارسی</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag ur" alt="اردو" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>اردو</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag hi" alt="हिंदी" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>हिंदी</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag bn" alt="বাংলা" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>বাংলা</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag vi" alt="Tiếng Việt" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Tiếng Việt</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag th" alt="ไทย" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>ไทย</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag id" alt="Indonesia" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Indonesia</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag fil" alt="Tagalog" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>Tagalog</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag zh" alt="中文" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>中文</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag ko" alt="한국어" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>한국어</div></div><div class="lang-item" data-v-48f6cf02><div class="item-flag" data-v-48f6cf02><div class="flag ja" alt="日本語" data-v-48f6cf02></div></div> <div class="item-lang-name" data-v-48f6cf02>日本語</div></div><!--]--></div></div> <div class="mobilemenu" data-v-69e3e417 data-v-4f26d3f8><div class="mobmenu-wrap" data-v-4f26d3f8><a href="/" class="nav-item" data-v-4f26d3f8>Home</a> <a href="/apidoc" class="nav-item" data-v-4f26d3f8>Documentation</a> <a href="/tutorials" class="nav-item" data-v-4f26d3f8>Tutorials</a> <a href="/clients/entrance/login" class="nav-item" data-v-4f26d3f8>Sign In</a> <!----></div></div> <!----> <!----> <a href="/clients/entrance/login" class="nav-item" data-v-69e3e417>Sign In</a> <a href="/clients/entrance/register" class="btn btn-cta register" data-v-69e3e417>Register</a></div></div></div> <div class="docs-content"><div class="col-pages-list"><div class="pages-list"><div class="mobile-close"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHASURBVHgB7ZrBTcNAEEU/UADuAJdgd4DgxImUkBtXWoJCoASogFRAgAYCs2hHsRTF3rF3lh0xT/qXRPH4xeu1x2vAcRzHcRzH0eEMchrKHeWGckH5onyiDMVrrygflO9BNpQO+vSx1rD2Nu6TCi0OZTnhc03pfqR2kG6gwPpIQW3pMdmQHeU+dWOnSKed+D78y8/IKx1knzB+BE8gOMIS4ZTJIad0imyA55HsNDicNLSG99QwHuYN06NvNp1gR+ZKS2S3KHCF0JSuTpbRkK5WlskpXb0sk0PajCyzRNqcLDNHWvKbqmQZqbRpWUYibV6WySVtQpZZKm1KlpkrbVKWkUqry0raQ2eCfzWkJXdQx6R7GGGprCnpXLImpKWNwBaGped0PR2MSi9p8XoYk87Rz5qRztm8Vy+t8aSiWmnNxzLVSZd4BiWVVrsNbZG+1LJ0RyTSYamlgQJrlJFlUqX/bLk0EIb7FeUVy3mhXMdtTnGORHIul+aUZVKlN1AgnCfHhph2D9tP1G6hxCoW2GF//oRJo0TD3sVau0HeKbeCbfy+LiClpVxi/5LLA8q9ttTG2hex9mPB2o7jOI7jOM4oP09xm/w79JAHAAAAAElFTkSuQmCC" alt=""></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIH
79ImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials" class="" data-v-1e39db13>Tutorials list</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/how-to-submit-recaptcha-gresponse-with-textarea" class="" data-v-1e39db13>Bypassing reCaptcha V2 with NodeJS and Axios</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/submit-form-with-recaptcha-using-callback-function" class="" data-v-1e39db13>Submit form with reCaptcha v2 using the callback function.</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/recaptcha-with-anonymous-callback-function" class="" data-v-1e39db13>Submit a form with reCaptcha v2 with obfuscated code and an anonymous callback function.</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/how-to-use-chrome-breakpoints-for-finding-funcaptcha-and-geetest-api-parameters" class="" data-v-1e39db13>Learn how to use breakpoints in Chrome to find API parameters for FunCaptcha and GeeTest</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/how-to-bypass-image-captcha" class="" data-v-1e39db13>Learn how to submit a form with an image captcha using Python</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIH
79ImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/how-to-bypass-recaptcha-v3" class="" data-v-1e39db13>Bypass reCaptcha V3 with NodeJS and Puppeteer</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/how-to-bypass-cloudflare" class="" data-v-1e39db13>How to bypass Cloudflare</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a aria-current="page" href="/apidoc/articles/how-to-integrate-the-plugin" class="router-link-active router-link-exact-active" data-v-1e39db13>How to integrate our plugin in Puppeteer or Selenium</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/how-to-use-g-response" class="" data-v-1e39db13>How to use g-response to submit a form with reCaptcha</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/how-to-find-the-sitekey" class="" data-v-1e39db13>How to find the reCaptcha sitekey</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/how-to-install-squid" class="" data-v-1e39db13>How to install best proxy server SQUID</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIH
79ImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/how-to-bypass-any-captcha" class="" data-v-1e39db13>How to bypass any captcha with AntiGate tasks</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/tutorials/bypass_any_captcha_with_antigate_templates" class="" data-v-1e39db13>Bypass any captcha with AntiGate templates</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/new_recaptcha_hand_gesture_verification_challenge" class="" data-v-1e39db13>Anti-Captcha vs Google&#39;s reCAPTCHA Hand Gesture Verification</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/best-2captcha-alternative" class="" data-v-1e39db13>The Best 2Captcha Alternative: Why Choose Anti-Captcha</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/best-captcha-solving-service" class="" data-v-1e39db13>Anti-Captcha: The Best Captcha Solving Service</a></div> <div class="page-link" data-v-1e39db13><div class="bullet-col" data-v-1e39db13><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB7ZKxDcIwEEXPoaHMCIyQKmnDBmwADJAoG0QZgSQ9YZPQEVeMABtkAdt8AxXCtpzaT7J0p7v7PsufKBD4hbkaqqrKhRA1YyxBGiulRsRD27YX29zKVizLsobQAKEN0vV7k0+8y7KMpmm6ku/GRVEcIHImC1LKbd/3479aZJnbkwNcXJtqkWUoJ7dw4i0MZnITewvj0+7kQDtkiXBDDrTtTDWj3TjnD1hKuyY3tDTw8ol8hTXw6Zim6RNh/PXvjJfccI5d1w0UCHjxAor2QgYCBBdeAAAAAElFTkSuQmCC" width="11" height="11" alt="list icon" data-v-1e39db13></div> <a href="/apidoc/articles/recaptcha_qr_is_natively_supported" class="" data-v-1e39db13>Recaptcha QR code challenge is natively supported</a></div></div></div> <div class="col-page-content"><div class="page-content"><div class="mobile-apidoc-menu"><div class="col-icon"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD5SURBVHgB7dfBDYJAEIXhWStQK9AShD61A0tAbUA6EEuwArEC19nIgcAc9EIY+L/kxWTCZY
79LAPhEAAAAMKMa40ZSaOvpUaDbWbsFaVn8qzVJ8qzVZCOHRHi6MCw/if9lkpTl2h9YdjjIdtd7hdXtg3eGXTEfvn2otfJfpuHQHvLSaC3aas/iUHslSjGUBAMAIRfqwS/ThhD4s9GHXfu7DN/k+A5791YczzUkTHSYtWgp9GAAwfsEaNsfpIL5F/Q73hr2DR7PsVnPVPDVvhynSDlYPso6Wadl0tJxNH94Lfdgt+rC1cCXTMas+nL4w+Zz6cE4fBgAAGNIHHYdo2ZDeeWMAAAAASUVORK5CYII="></div> <div class="col-text">Menu</div></div> <!--[--><div data-v-72a7208e><h1 data-v-72a7208e>How to use the Anti-Captcha plugin in Puppeteer or Selenium</h1> <p data-v-72a7208e>Puppeteer and Selenium are two popular tools for browser automation, and our plugin integrates seamlessly into them. In this article, we&#39;ll show how to use it in Puppeteer and Selenium for NodeJS and Python programming languages respectively. If you have to choose one or the other, we strongly recommend NodeJS+Puppeteer for its native environment.</p> <p data-v-72a7208e>1. Install dependencies. For NodeJS, install the given npm packages below; for Python, install the packages and download &quot;chromedriver&quot; executable from <!--[--><a href="https://chromedriver.chromium.org/downloads" target="_blank" data-v-72a7208e>this</a><!--]--> page. The driver version should match the Chrome version installed on your system.</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
80    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
81</svg>
82</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-bash" data-v-f4723e5d><!--[-->npm install adm-zip puppeteer puppeteer-extra puppeteer-extra-plugin-stealth<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
83    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
84</svg>
85</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-bash" data-v-f4723e5d><!--[-->pip3 install selenium<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>2. Download the ZIP version of the plugin for Chrome and unzip it to your project folder. Actual versions are located <!--[--><a href="https://antcpt.com/eng/download/google-chrome-options.html" target="_blank" data-v-72a7208e>here</a><!--]-->. You can also do it programmatically:</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
86    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
87</svg>
88</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-javascript" data-v-f4723e5d><!--[-->//npm install adm-zip
89const https = require(&#39;https&#39;)
90const fs = require(&#39;fs&#39;);
91const AdmZip = require(&quot;adm-zip&quot;);
92
93const pluginURL = &#39;https://antcpt.com/anticaptcha-plugin.zip&#39;;
94
95(async () =&gt; {
96    // download the plugin
97    await new Promise((resolve) =&gt; {
98        https.get(pluginURL, resp =&gt; resp.pipe(fs.createWriteStream(&#39;./plugin.zip&#39;).on(&#39;close&#39;, resolve)));
99    })
100    // unzip it
101    const zip = new AdmZip(&quot;./plugin.zip&quot;);
102    await zip.extractAllTo(&quot;./plugin/&quot;, true);
103})();<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
104    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
105</svg>
106</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-python" data-v-f4723e5d><!--[-->import urllib.request
107import zipfile
108
109url = &#39;https://antcpt.com/anticaptcha-plugin.zip&#39;
110# download the plugin
111filehandle, _ = urllib.request.urlretrieve(url)
112# unzip it
113with zipfile.ZipFile(filehandle, &quot;r&quot;) as f:
114    f.extractall(&quot;plugin&quot;)<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>3. Next, configure your API key in the <!--[--><span class="inline-highlight" data-v-72a7208e>
114./plugin/js/config_ac_api_key.js</span><!--]--> file. You can find your API key in the <!--[--><a href="/clients/settings/apisetup" class="" data-v-72a7208e>customer area</a><!--]-->. You&#39;ll need a positive balance to get it working.</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
115    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
116</svg>
117</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-javascript" data-v-f4723e5d><!--[-->const apiKey = &#39;API_KEY_32_BYTES&#39;;
118if (fs.existsSync(&#39;./plugin/js/config_ac_api_key.js&#39;)) {
119    let confData = fs.readFileSync(&#39;./plugin/js/config_ac_api_key.js&#39;, &#39;utf8&#39;);
120    confData = confData.replace(/antiCapthaPredefinedApiKey = &#39;&#39;/g, `antiCapthaPredefinedApiKey = &#39;${apiKey}&#39;`);
121    fs.writeFileSync(&#39;./plugin/js/config_ac_api_key.js&#39;, confData, &#39;utf8&#39;);
122} else {
123    console.error(&#39;plugin configuration not found!&#39;)
124}<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
125    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
126</svg>
127</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-python" data-v-f4723e5d><!--[-->import os
128import zipfile
129from pathlib import Path
130
131# set API key in configuration file
132api_key = &quot;API_KEY_32_BYTES&quot;
133file = Path(&#39;./plugin/js/config_ac_api_key.js&#39;)
134file.write_text(file.read_text().replace(&quot;antiCapthaPredefinedApiKey = &#39;&#39;&quot;, &quot;antiCapthaPredefinedApiKey = &#39;{}&#39;&quot;.format(api_key)))
135
136# zip plugin directory back to plugin.zip
137zip_file = zipfile.ZipFile(&#39;./plugin.zip&#39;, &#39;w&#39;, zipfile.ZIP_DEFLATED)
138for root, dirs, files in os.walk(&quot;./plugin&quot;):
139        for file in files:
140            path = os.path.join(root, file)
141            zip_file.write(path, arcname=path.replace(&quot;./plugin/&quot;, &quot;&quot;))
142zip_file.close()<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>4. Initialize the browser with the plugin. For Puppeteer we recommend the &#39;puppeteer-extra-plugin-stealth&#39; plugin for the &#39;puppeteer-extra&#39; package, which hides all signs of the web-automated Chromium browser.</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
143    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
144</svg>
145</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-javascript" data-v-f4723e5d><!--[-->//npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
146const puppeteer = require(&#39;puppeteer-extra&#39;);
147const StealthPlugin = require(&#39;puppeteer-extra-plugin-stealth&#39;);
148puppeteer.use(StealthPlugin());
149
150(async () =&gt; {
151    const browser = await puppeteer.launch({
152        headless: false,
153        ignoreDefaultArgs: [
154            &quot;--disable-extensions&quot;,
155            &quot;--enable-automation&quot;
156        ],
157        args: [
158            &#39;--disable-web-security&#39;,
159            &#39;--disable-features=IsolateOrigins,site-per-process&#39;,
160            &#39;--allow-running-insecure-content&#39;,
161            &#39;--disable-blink-features=AutomationControlled&#39;,
162            &#39;--no-sandbox&#39;,
163            &#39;--mute-audio&#39;,
164            &#39;--no-zygote&#39;,
165            &#39;--no-xshm&#39;,
166            &#39;--window-size=1920,1080&#39;,
167            &#39;--no-first-run&#39;,
168            &#39;--no-default-browser-check&#39;,
169            &#39;--disable-dev-shm-usage&#39;,
170            &#39;--disable-gpu&#39;,
171            &#39;--enable-webgl&#39;,
172            &#39;--ignore-certificate-errors&#39;,
173            &#39;--lang=en-US,en;q=0.9&#39;,
174            &#39;--password-store=basic&#39;,
175            &#39;--disable-gpu-sandbox&#39;,
176            &#39;--disable-software-rasterizer&#39;,
177            &#39;--disable-background-timer-throttling&#39;,
178            &#39;--disable-backgrounding-occluded-windows&#39;,
179            &#39;--disable-renderer-backgrounding&#39;,
180            &#39;--disable-infobars&#39;,
181            &#39;--disable-breakpad&#39;,
182            &#39;--disable-canvas-aa&#39;,
183            &#39;--disable-2d-canvas-clip-aa&#39;,
184            &#39;--disable-gl-drawing-for-tests&#39;,
185            &#39;--enable-low-end-device-mode&#39;,
186            &#39;--disable-extensions-except=./plugin&#39;,
187            &#39;--load-extension=./plugin&#39;
188        ]
189    });
190    const page = await browser.newPage();
191})();<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
192    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
193</svg>
194</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-python" data-v-f4723e5d><!--[-->from selenium import webdriver
195
196options = webdriver.ChromeOptions()
197options.add_extension(&#39;./plugin.zip&#39;)
198
199browser = webdriver.Chrome(&#39;./chromedriver&#39;, options=options)<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>5. Navigate to a target page and fill a form if required. The plugin will pick up the reCaptcha automatically and start solving it.</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
200    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
201</svg>
202</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-javascript" data-v-f4723e5d><!--[-->(async () =&gt; {
203    const url = &#39;https://anti-captcha.com/demo/?page=recaptcha_v2_textarea&#39;;
204    const login = &#39;Test login&#39;;
205    const password = &#39;Test password&#39;;
206
207    try {
208        await page.goto(url, {
209            waitUntil: &quot;networkidle0&quot;
210        });
211    } catch (e) {
212        console.error(&#39;err while loading the page: &#39;+e);
213    }
214    // disable navigation timeout errors
215    await page.setDefaultNavigationTimeout(0);
216
217    await page.$eval(&#39;#login&#39;, (element, login) =&gt; {
218        element.value = login;
219    }, login);
220    await page.$eval(&#39;#password&#39;, (element, password) =&gt; {
221        element.value = password;
222    }, password);
223
224})();<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
225    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
226</svg>
227</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-python" data-v-f4723e5d><!--[-->browser.get(&#39;https://anti-captcha.com/demo/?page=recaptcha_v2_textarea&#39;)
228
229# filling form
230browser.find_element_by_css_selector(&#39;#login&#39;).send_keys(&#39;Test login&#39;)
231browser.find_element_by_css_selector(&#39;#password&#39;).send_keys(&#39;Test password&#39;)<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>6. Next is the slightly tricky part. <!--[--><a href="https://anti-captcha.com/demo/?page=recaptcha_v2_textarea" target="_blank" data-v-72a7208e>Some</a><!--]--> web forms require users to press a submit button after solving the reCaptcha, <!--[--><a href="https://anti-captcha.com/demo/?page=recaptcha_v2_callback" data-v-72a7208e>others</a>
231<!--]--> utilize callbacks and submit them automatically. In the first case, we want to press the submit button right after the reCaptcha is solved. To do this at the right time, simply wait for the selector <!--[--><span class="inline-highlight" data-v-72a7208e>.antigate_solver.solved</span><!--]--> to come up and then press the submit button. </p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
232    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
233</svg>
234</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-javascript" data-v-f4723e5d><!--[-->// wait for &quot;solved&quot; selector to come up
235await page.waitForSelector(&#39;.antigate_solver.solved&#39;
235).catch(error =&gt; console.log(&#39;failed to wait for the selector&#39;));
236console.log(&#39;recaptcha solved&#39;);
237
238// press the submit button
239await Promise.all([
240    page.click(&#39;#submitButton&#39;),
241    page.waitForNavigation({ waitUntil: &quot;networkidle0&quot; })
242]);
243console.log(&#39;task completed, form with reCaptcha bypassed &#39;);<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
244    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
245</svg>
246</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-python" data-v-f4723e5d><!--[--># wait for &quot;solved&quot; selector to come up
247webdriver.support.wait.WebDriverWait(browser, 120).until(lambda x: x.find_element_by_css_selector(&#39;.antigate_solver.solved&#39;))
248# press the submit button
249browser.find_element_by_css_selector(&#39;#submitButton&#39;).click()<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>That&#39;s it; the form is filled, and the reCaptcha is solved and bypassed. Full code samples:</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="has-titles tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><h3 class="source-tabs-title" data-v-ed59ce05>How to integrate Anti-Captcha browser extension in Node.js</h3> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
250    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
251</svg>
252</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-javascript" data-v-f4723e5d><!--[-->// first run the following to install required npm packages:
253//
254// npm install adm-zip follow-redirects puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
255//
256//
257const https = require(&#39;follow-redirects&#39;).https;
258const fs = require(&#39;fs&#39;);
259const AdmZip = require(&quot;adm-zip&quot;);
260
261const apiKey = &#39;YOUR_API_KEY_HERE!&#39;;
262const pluginURL = &#39;https://antcpt.com/anticaptcha-plugin.zip&#39;;
263const url = &#39;https://anti-captcha.com/demo/?page=recaptcha_v2_textarea&#39;;
264const login = &#39;Test login&#39;;
265const password = &#39;Test password&#39;;
266let page = null;
267
268
269const puppeteer = require(&#39;puppeteer-extra&#39;);
270const StealthPlugin = require(&#39;puppeteer-extra-plugin-stealth&#39;);
271puppeteer.use(StealthPlugin());
272
273(async () =&gt; {
274    // download the plugin
275    await new Promise((resolve) =&gt; {
276        https.get(pluginURL, resp =&gt; resp.pipe(fs.createWriteStream(&#39;./plugin.zip&#39;).on(&#39;close&#39;, resolve)));
277    })
278    // unzip it
279    const zip = new AdmZip(&quot;./plugin.zip&quot;);
280    await zip.extractAllTo(&quot;./plugin/&quot;, true);
281
282    // set API key in configuration file
283    await new Promise((resolve, reject) =&gt; {
284        if (fs.existsSync(&#39;
284./plugin/js/config_ac_api_key.js&#39;)) {
285            let confData = fs.readFileSync(&#39;./plugin/js/config_ac_api_key.js&#39;, &#39;utf8&#39;);
286            confData = confData.replace(/antiCapthaPredefinedApiKey = &#39;&#39;/g, `antiCapthaPredefinedApiKey = &#39;${apiKey}&#39;`);
287            fs.writeFileSync(&#39;./plugin/js/config_ac_api_key.js&#39;, confData, &#39;utf8&#39;);
288            resolve();
289        } else {
290            console.error(&#39;plugin configuration not found!&#39;)
291            reject();
292        }
293    });
294
295    // set browser launch options
296    const options = {
297        headless: false,
298        ignoreDefaultArgs: [
299            &quot;--disable-extensions&quot;,
300            &quot;--enable-automation&quot;
301        ],
302        args: [
303            &#39;--disable-web-security&#39;,
304            &#39;--disable-features=IsolateOrigins,site-per-process&#39;,
305            &#39;--allow-running-insecure-content&#39;,
306            &#39;--disable-blink-features=AutomationControlled&#39;,
307            &#39;--no-sandbox&#39;,
308            &#39;--mute-audio&#39;,
309            &#39;--no-zygote&#39;,
310            &#39;--no-xshm&#39;,
311            &#39;--window-size=1920,1080&#39;,
312            &#39;--no-first-run&#39;,
313            &#39;--no-default-browser-check&#39;,
314            &#39;--disable-dev-shm-usage&#39;,
315            &#39;--disable-gpu&#39;,
316            &#39;--enable-webgl&#39;,
317            &#39;--ignore-certificate-errors&#39;,
318            &#39;--lang=en-US,en;q=0.9&#39;,
319            &#39;--password-store=basic&#39;,
320            &#39;--disable-gpu-sandbox&#39;,
321            &#39;--disable-software-rasterizer&#39;,
322            &#39;--disable-background-timer-throttling&#39;,
323            &#39;--disable-backgrounding-occluded-windows&#39;,
324            &#39;--disable-renderer-backgrounding&#39;,
325            &#39;--disable-infobars&#39;,
326            &#39;--disable-breakpad&#39;,
327            &#39;--disable-canvas-aa&#39;,
328            &#39;--disable-2d-canvas-clip-aa&#39;,
329            &#39;--disable-gl-drawing-for-tests&#39;,
330            &#39;--enable-low-end-device-mode&#39;,
331            &#39;--disable-extensions-except=./plugin&#39;,
332            &#39;--load-extension=./plugin&#39;
333        ]
334    }
335
336    try {
337        // launch browser with the plugin
338        const browser = await puppeteer.launch();
339        page = await browser.newPage();
340    } catch (e) {
341        console.log(&#39;could not launch browser: &#39;+e.toString())
342        return;
343    }
344
345    // navigate to the target page
346    try {
347        await page.goto(url, {
348            waitUntil: &quot;networkidle0&quot;
349        });
350    } catch (e) {
351        console.error(&#39;err while loading the page: &#39;+e);
352    }
353
354    // disable navigation timeout errors
355    await page.setDefaultNavigationTimeout(0);
356
357    // fill the form
358    await page.$eval(&#39;#login&#39;, (element, login) =&gt; {
359        element.value = login;
360    }, login);
361    await page.$eval(&#39;#password&#39;, (element, password) =&gt; {
362        element.value = password;
363    }, password);
364
365    // wait for &quot;solved&quot; selector to come up
366    await page.waitForSelector(&#39;.antigate_solver.solved&#39;
366).catch(error =&gt; console.log(&#39;failed to wait for the selector&#39;));
367    console.log(&#39;recaptcha solved&#39;);
368
369    // press the submit button
370    await Promise.all([
371        page.click(&#39;#submitButton&#39;),
372        page.waitForNavigation({ waitUntil: &quot;networkidle0&quot; })
373    ]);
374    console.log(&#39;recaptcha solved&#39;);
375
376})();<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><h3 class="source-tabs-title" data-v-ed59ce05>How to integrate Anti-Captcha browser extension in Python</h3> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
377    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
378</svg>
379</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-python" data-v-f4723e5d><!--[-->import urllib.request
380import zipfile
381import os
382from pathlib import Path
383from selenium import webdriver
384
385# download the plugin
386url = &#39;https://antcpt.com/anticaptcha-plugin.zip&#39;
387filehandle, _ = urllib.request.urlretrieve(url)
388# unzip it
389with zipfile.ZipFile(filehandle, &quot;r&quot;) as f:
390    f.extractall(&quot;plugin&quot;)
391
392# set API key in configuration file
393api_key = &quot;YOUR_API_KEY_HERE!&quot;
394file = Path(&#39;./plugin/js/config_ac_api_key.js&#39;)
395file.write_text(file.read_text().replace(&quot;antiCapthaPredefinedApiKey = &#39;&#39;&quot;, &quot;antiCapthaPredefinedApiKey = &#39;{}&#39;&quot;.format(api_key)))
396
397# zip plugin directory back to plugin.zip
398zip_file = zipfile.ZipFile(&#39;./plugin.zip&#39;, &#39;w&#39;, zipfile.ZIP_DEFLATED)
399for root, dirs, files in os.walk(&quot;./plugin&quot;):
400        for file in files:
401            path = os.path.join(root, file)
402            zip_file.write(path, arcname=path.replace(&quot;./plugin/&quot;, &quot;&quot;))
403zip_file.close()
404
405# set browser launch options
406options = webdriver.ChromeOptions()
407options.add_extension(&#39;./plugin.zip&#39;)
408
409# set browser launch options
410browser = webdriver.Chrome(&#39;./chromedriver&#39;, options=options)
411
412# navigate to the target page
413browser.get(&#39;https://anti-captcha.com/demo/?page=recaptcha_v2_textarea&#39;)
414
415# fill the form
416browser.find_element_by_css_selector(&#39;#login&#39;).send_keys(&#39;Test login&#39;)
417browser.find_element_by_css_selector(&#39;#password&#39;).send_keys(&#39;Test password&#39;)
418
419# wait for &quot;solved&quot; selector to come up
420webdriver.support.wait.WebDriverWait(browser, 120).until(lambda x: x.find_element_by_css_selector(&#39;.antigate_solver.solved&#39;))
421
422# press the submit button
423browser.find_element_by_css_selector(&#39;#submitButton&#39;).click()<!--]--></code></pre></div></div></div><!--]--></div></div> <p data-v-72a7208e>Bonus: there&#39;s a trick to running the plugin in headless mode, as Chrome does not support browser automation with plugins. Use the utility called <!--[--><span class="inline-highlight" data-v-72a7208e>Xvfb</span><!--]-->, which provides a virtual desktop for your application.</p> <div class="example-code-with-titles source-tabs-static" data-v-72a7208e data-v-ed59ce05><div class="tabs-list" role="tablist" aria-label="Language" data-v-ed59ce05><!--[--><div class="active tab-title" data-v-ed59ce05>Node.js</div><div class="tab-title" data-v-ed59ce05>Python</div><!--]--></div> <div class="body" data-v-ed59ce05><!--[--><div role="tabpanel" aria-labelledby="tab-Node.js" style="" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
424    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
425</svg>
426</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-bash" data-v-f4723e5d><!--[--># install the package
427apt-get install -y xvfb
428
429# set display variable
430export DISPLAY=:0
431
432# start Xvfb daemon in the background (only once)
433/usr/bin/Xvfb :0 -screen 0 1024x768x24 &amp;
434
435# wait a moment to let it come up (only once)
436sleep 5
437
438# add the prefix &quot;xvfb-run&quot; to &quot;node&quot; or &quot;python&quot; script
439xvfb-run node myscript.js<!--]--></code></pre></div></div></div><div role="tabpanel" aria-labelledby="tab-Python" style="display:none;" data-v-ed59ce05><!----> <div class="example-code" data-v-72a7208e data-v-f4723e5d><div class="body" data-v-f4723e5d><button type="button" class="copy-code" aria-label="Copy" data-v-f4723e5d><span class="nuxt-icon nuxt-icon--fill" data-v-f4723e5d><svg viewBox="0 0 24 24">
440    <path d="M10 2C9.44772 2 9 2.44772 9 3V17C9 17.5523 9.44772 18 10 18H20C20.5523 18 21 17.5523 21 17V8H17C15.8954 8 15 7.10457 15 6V2H10ZM17 2V6H21V4.41421L18.5858 2H17ZM7 3C7 1.34315 8.34315 0 10 0H18.5858C19.1162 0 19.6249 0.210714 20 0.585786L22.4142 3C22.7893 3.37507 23 3.88378 23 4.41421V17C23 18.6569 21.6569 20 20 20H16.5V21C16.5 22.6569 15.1569 24 13.5 24H4C2.34315 24 1 22.6569 1 21V7.5C1 5.84315 2.34315 4.5 4 4.5H7V3ZM7 6.5H4C3.44772 6.5 3 6.94772 3 7.5V21C3 21.5523 3.44772 22 4 22H13.5C14.0523 22 14.5 21.5523 14.5 21V20H10C8.34315 20 7 18.6569 7 17V6.5Z"/>
441</svg>
442</span> <span data-v-f4723e5d>Copy</span></button> <pre data-v-f4723e5d><code class="language-bash" data-v-f4723e5d><!--[--># install the package
443apt-get install -y xvfb
444
445# set display variable
446export DISPLAY=:0
447
448# start Xvfb daemon in the background (only once)
449/usr/bin/Xvfb :0 -screen 0 1024x768x24 &amp;
450
451# wait a moment to let it come up (only once)
452sleep 5
453
454# add the prefix &quot;xvfb-run&quot; to &quot;node&quot; or &quot;python&quot; script
455xvfb-run python myscript.py<!--]--></code></pre></div></div></div><!--]--></div></div></div><!--]--></div></div></div> <div class="apidoc-footer"></div></div></div>
455<script type="application/json" id="__NUXT_DATA__" data-ssr="true">[["Reactive",1],{"data":2,"state":3,"_errors":18,"serverRendered":10,"path":19,"prerenderedAt":20},{},{"$slang_id":4,"$slang_code":5,"$slang_name":6,"$slang_url":7,"$slang_direction":8,"$slang_is_detected":9,"$slang_select_open":9,"$sisMenuHidden":10,"$snavigationSection":11,"$sisClientsMobileMenuOpened":9,"$sisClientsMenuHiddenManually":9,"$sisPanelLoaded":9,"$sisPageLoaderActive":10,"$spageTitleGlobal":12,"$sisTransitionsEnabled":10,"$sisPaymentResultMessageShown":9,"$sisNuxtLoaded":9,"$sisMobDocMenuOpen":9,"$sauthCookieValue":12,"$sisRequestActive":9,"$sauthorizationCheckStatus":13,"$sisAuthorized":9,"$saccountLogin":12,"$sblockedForms":14,"$sentranceAction":12,"$serrorCode":12,"$stwoFAResult":15,"$stwoFAAttemptsLeft":12,"$stwoFAEmailSentTo":12,"$srecaptchaType":16,"$srecaptchaSitekey":12,"$srecaptchaLoginAction":12,"$sentranceUser":12,"$sentrancePassword":12,"$sentranceRegisterEmail":12,"$sentranceTwoFACode":12,"$sisStayLogged":9,"$sisRecoverByEmail":9,"$sentranceRecoveryEmail":12,"$sentranceRecoveryConfirmationCode":12,"$sentranceRecoveryNewPassword":12,"$sentranceRecoveryConfirmationWarning":12,"$spasswordStrengthScore":17,"$sroutePathBeforeAuth":12},2,"en","English","https://anti-captcha.com/images/flags/en.png","ltr",false,true,"default","","unchecked",[],"success","v2",0,{},"/apidoc/articles/how-to-integrate-the-plugin",1790753938862]</script>
vendor: 1 bytes, line 455
455
456<script>window.__NUXT__={};window.__NUXT__.config={public:{prefetchSections:"prefetch-sections.db6816f5.js",i18n:{experimental:{jsTsFormatResource:false},baseUrl:""}},app:{baseURL:"/",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script>
456</body>
457</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.