[{"data":1,"prerenderedAt":924},["ShallowReactive",2],{"doc-ru-integrations\u002Fautomation-frameworks":3},{"id":4,"title":5,"body":6,"description":916,"extension":917,"faq":918,"meta":919,"navigation":71,"path":920,"seo":921,"stem":922,"__hash__":923},"docs\u002Fdocs\u002Fru\u002Fintegrations\u002Fautomation-frameworks.md","Фреймворки автоматизации",{"type":7,"value":8,"toc":908},"minimark",[9,22,27,34,148,155,159,166,299,315,319,521,525,702,835,839,842,871,875,904],[10,11,12,13,17,18,21],"p",{},"Подключение Selenium, Puppeteer, Playwright, Scrapy и других фреймворков автоматизации и парсинга. Все примеры запускаются после замены ",[14,15,16],"code",{},"USERNAME"," и ",[14,19,20],{},"PASSWORD"," на ваши учётные данные.",[23,24,26],"h2",{"id":25},"scrapy","Scrapy",[10,28,29,30,33],{},"Включите прокси-middleware в ",[14,31,32],{},"settings.py"," или задавайте прокси для каждого запроса:",[35,36,41],"pre",{"className":37,"code":38,"language":39,"meta":40,"style":40},"language-python shiki shiki-themes github-light","# Вариант 1: глобально (settings.py)\nHTTPPROXY_ENABLED = True\n\n# Указываем прокси для каждого запроса в Spider\ndef start_requests(self):\n    proxy = \"http:\u002F\u002FUSERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333\"\n    for url in self.start_urls:\n        yield scrapy.Request(url, meta={\"proxy\": proxy})\n","python","",[14,42,43,52,66,73,79,93,106,124],{"__ignoreMap":40},[44,45,48],"span",{"class":46,"line":47},"line",1,[44,49,51],{"class":50},"sAwPA","# Вариант 1: глобально (settings.py)\n",[44,53,55,59,63],{"class":46,"line":54},2,[44,56,58],{"class":57},"sYu0t","HTTPPROXY_ENABLED",[44,60,62],{"class":61},"sD7c4"," =",[44,64,65],{"class":57}," True\n",[44,67,69],{"class":46,"line":68},3,[44,70,72],{"emptyLinePlaceholder":71},true,"\n",[44,74,76],{"class":46,"line":75},4,[44,77,78],{"class":50},"# Указываем прокси для каждого запроса в Spider\n",[44,80,82,85,89],{"class":46,"line":81},5,[44,83,84],{"class":61},"def",[44,86,88],{"class":87},"s7eDp"," start_requests",[44,90,92],{"class":91},"sgsFI","(self):\n",[44,94,96,99,102],{"class":46,"line":95},6,[44,97,98],{"class":91},"    proxy ",[44,100,101],{"class":61},"=",[44,103,105],{"class":104},"sYBdl"," \"http:\u002F\u002FUSERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333\"\n",[44,107,109,112,115,118,121],{"class":46,"line":108},7,[44,110,111],{"class":61},"    for",[44,113,114],{"class":91}," url ",[44,116,117],{"class":61},"in",[44,119,120],{"class":57}," self",[44,122,123],{"class":91},".start_urls:\n",[44,125,127,130,133,137,139,142,145],{"class":46,"line":126},8,[44,128,129],{"class":61},"        yield",[44,131,132],{"class":91}," scrapy.Request(url, ",[44,134,136],{"class":135},"sqxcx","meta",[44,138,101],{"class":61},[44,140,141],{"class":91},"{",[44,143,144],{"class":104},"\"proxy\"",[44,146,147],{"class":91},": proxy})\n",[10,149,150,151,154],{},"Ротация на каждый запрос — поведение по умолчанию, оно естественно ложится на модель конкурентности Scrapy; если нужен фиксированный IP на сессию, добавьте в username ",[14,152,153],{},"sid",".",[23,156,158],{"id":157},"selenium-python","Selenium (Python)",[10,160,161,162,165],{},"Параметры командной строки Chrome не поддерживают прокси с аутентификацией; для логина и пароля рекомендуем ",[14,163,164],{},"selenium-wire",":",[35,167,169],{"className":37,"code":168,"language":39,"meta":40,"style":40},"# pip install selenium-wire\nfrom seleniumwire import webdriver\n\noptions = {\n    \"proxy\": {\n        \"http\": \"http:\u002F\u002FUSERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333\",\n        \"https\": \"http:\u002F\u002FUSERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333\",\n    }\n}\n\ndriver = webdriver.Chrome(seleniumwire_options=options)\ndriver.get(\"https:\u002F\u002Fipinfo.io\")\nprint(driver.page_source)\ndriver.quit()\n",[14,170,171,176,190,194,204,212,226,237,242,248,253,272,284,293],{"__ignoreMap":40},[44,172,173],{"class":46,"line":47},[44,174,175],{"class":50},"# pip install selenium-wire\n",[44,177,178,181,184,187],{"class":46,"line":54},[44,179,180],{"class":61},"from",[44,182,183],{"class":91}," seleniumwire ",[44,185,186],{"class":61},"import",[44,188,189],{"class":91}," webdriver\n",[44,191,192],{"class":46,"line":68},[44,193,72],{"emptyLinePlaceholder":71},[44,195,196,199,201],{"class":46,"line":75},[44,197,198],{"class":91},"options ",[44,200,101],{"class":61},[44,202,203],{"class":91}," {\n",[44,205,206,209],{"class":46,"line":81},[44,207,208],{"class":104},"    \"proxy\"",[44,210,211],{"class":91},": {\n",[44,213,214,217,220,223],{"class":46,"line":95},[44,215,216],{"class":104},"        \"http\"",[44,218,219],{"class":91},": ",[44,221,222],{"class":104},"\"http:\u002F\u002FUSERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333\"",[44,224,225],{"class":91},",\n",[44,227,228,231,233,235],{"class":46,"line":108},[44,229,230],{"class":104},"        \"https\"",[44,232,219],{"class":91},[44,234,222],{"class":104},[44,236,225],{"class":91},[44,238,239],{"class":46,"line":126},[44,240,241],{"class":91},"    }\n",[44,243,245],{"class":46,"line":244},9,[44,246,247],{"class":91},"}\n",[44,249,251],{"class":46,"line":250},10,[44,252,72],{"emptyLinePlaceholder":71},[44,254,256,259,261,264,267,269],{"class":46,"line":255},11,[44,257,258],{"class":91},"driver ",[44,260,101],{"class":61},[44,262,263],{"class":91}," webdriver.Chrome(",[44,265,266],{"class":135},"seleniumwire_options",[44,268,101],{"class":61},[44,270,271],{"class":91},"options)\n",[44,273,275,278,281],{"class":46,"line":274},12,[44,276,277],{"class":91},"driver.get(",[44,279,280],{"class":104},"\"https:\u002F\u002Fipinfo.io\"",[44,282,283],{"class":91},")\n",[44,285,287,290],{"class":46,"line":286},13,[44,288,289],{"class":57},"print",[44,291,292],{"class":91},"(driver.page_source)\n",[44,294,296],{"class":46,"line":295},14,[44,297,298],{"class":91},"driver.quit()\n",[10,300,301,302,307,308,311,312,154],{},"Альтернатива — ",[303,304,306],"a",{"href":305},"\u002Fdocs\u002Fusage\u002Fapi-extraction","режим белого списка",": извлеките ",[14,309,310],{},"IP:порт"," без аутентификации и используйте нативный параметр ",[14,313,314],{},"--proxy-server",[23,316,318],{"id":317},"puppeteer-nodejs","Puppeteer (Node.js)",[35,320,324],{"className":321,"code":322,"language":323,"meta":40,"style":40},"language-javascript shiki shiki-themes github-light","const puppeteer = require(\"puppeteer\");\n\n(async () => {\n  const browser = await puppeteer.launch({\n    args: [\"--proxy-server=http:\u002F\u002Fproxy.eproxies.net:23333\"],\n  });\n  const page = await browser.newPage();\n  await page.authenticate({\n    username: \"USERNAME-pool-flow-region-US\",\n    password: \"PASSWORD\",\n  });\n  await page.goto(\"https:\u002F\u002Fipinfo.io\u002Fjson\");\n  console.log(await page.evaluate(() => document.body.innerText));\n  await browser.close();\n})();\n","javascript",[14,325,326,348,352,367,389,400,405,425,438,448,458,462,478,504,515],{"__ignoreMap":40},[44,327,328,331,334,336,339,342,345],{"class":46,"line":47},[44,329,330],{"class":61},"const",[44,332,333],{"class":57}," puppeteer",[44,335,62],{"class":61},[44,337,338],{"class":87}," require",[44,340,341],{"class":91},"(",[44,343,344],{"class":104},"\"puppeteer\"",[44,346,347],{"class":91},");\n",[44,349,350],{"class":46,"line":54},[44,351,72],{"emptyLinePlaceholder":71},[44,353,354,356,359,362,365],{"class":46,"line":68},[44,355,341],{"class":91},[44,357,358],{"class":61},"async",[44,360,361],{"class":91}," () ",[44,363,364],{"class":61},"=>",[44,366,203],{"class":91},[44,368,369,372,375,377,380,383,386],{"class":46,"line":75},[44,370,371],{"class":61},"  const",[44,373,374],{"class":57}," browser",[44,376,62],{"class":61},[44,378,379],{"class":61}," await",[44,381,382],{"class":91}," puppeteer.",[44,384,385],{"class":87},"launch",[44,387,388],{"class":91},"({\n",[44,390,391,394,397],{"class":46,"line":81},[44,392,393],{"class":91},"    args: [",[44,395,396],{"class":104},"\"--proxy-server=http:\u002F\u002Fproxy.eproxies.net:23333\"",[44,398,399],{"class":91},"],\n",[44,401,402],{"class":46,"line":95},[44,403,404],{"class":91},"  });\n",[44,406,407,409,412,414,416,419,422],{"class":46,"line":108},[44,408,371],{"class":61},[44,410,411],{"class":57}," page",[44,413,62],{"class":61},[44,415,379],{"class":61},[44,417,418],{"class":91}," browser.",[44,420,421],{"class":87},"newPage",[44,423,424],{"class":91},"();\n",[44,426,427,430,433,436],{"class":46,"line":126},[44,428,429],{"class":61},"  await",[44,431,432],{"class":91}," page.",[44,434,435],{"class":87},"authenticate",[44,437,388],{"class":91},[44,439,440,443,446],{"class":46,"line":244},[44,441,442],{"class":91},"    username: ",[44,444,445],{"class":104},"\"USERNAME-pool-flow-region-US\"",[44,447,225],{"class":91},[44,449,450,453,456],{"class":46,"line":250},[44,451,452],{"class":91},"    password: ",[44,454,455],{"class":104},"\"PASSWORD\"",[44,457,225],{"class":91},[44,459,460],{"class":46,"line":255},[44,461,404],{"class":91},[44,463,464,466,468,471,473,476],{"class":46,"line":274},[44,465,429],{"class":61},[44,467,432],{"class":91},[44,469,470],{"class":87},"goto",[44,472,341],{"class":91},[44,474,475],{"class":104},"\"https:\u002F\u002Fipinfo.io\u002Fjson\"",[44,477,347],{"class":91},[44,479,480,483,486,488,491,493,496,499,501],{"class":46,"line":286},[44,481,482],{"class":91},"  console.",[44,484,485],{"class":87},"log",[44,487,341],{"class":91},[44,489,490],{"class":61},"await",[44,492,432],{"class":91},[44,494,495],{"class":87},"evaluate",[44,497,498],{"class":91},"(() ",[44,500,364],{"class":61},[44,502,503],{"class":91}," document.body.innerText));\n",[44,505,506,508,510,513],{"class":46,"line":295},[44,507,429],{"class":61},[44,509,418],{"class":91},[44,511,512],{"class":87},"close",[44,514,424],{"class":91},[44,516,518],{"class":46,"line":517},15,[44,519,520],{"class":91},"})();\n",[23,522,524],{"id":523},"playwright-nodejs-python","Playwright (Node.js \u002F Python)",[35,526,528],{"className":321,"code":527,"language":323,"meta":40,"style":40},"\u002F\u002F Node.js\nconst { chromium } = require(\"playwright\");\n\n(async () => {\n  const browser = await chromium.launch({\n    proxy: {\n      server: \"http:\u002F\u002Fproxy.eproxies.net:23333\",\n      username: \"USERNAME-pool-flow-region-US\",\n      password: \"PASSWORD\",\n    },\n  });\n  const page = await browser.newPage();\n  await page.goto(\"https:\u002F\u002Fipinfo.io\u002Fjson\");\n  console.log(await page.textContent(\"body\"));\n  await browser.close();\n})();\n",[14,529,530,535,559,563,575,592,597,607,616,625,630,634,650,664,687,697],{"__ignoreMap":40},[44,531,532],{"class":46,"line":47},[44,533,534],{"class":50},"\u002F\u002F Node.js\n",[44,536,537,539,542,545,548,550,552,554,557],{"class":46,"line":54},[44,538,330],{"class":61},[44,540,541],{"class":91}," { ",[44,543,544],{"class":57},"chromium",[44,546,547],{"class":91}," } ",[44,549,101],{"class":61},[44,551,338],{"class":87},[44,553,341],{"class":91},[44,555,556],{"class":104},"\"playwright\"",[44,558,347],{"class":91},[44,560,561],{"class":46,"line":68},[44,562,72],{"emptyLinePlaceholder":71},[44,564,565,567,569,571,573],{"class":46,"line":75},[44,566,341],{"class":91},[44,568,358],{"class":61},[44,570,361],{"class":91},[44,572,364],{"class":61},[44,574,203],{"class":91},[44,576,577,579,581,583,585,588,590],{"class":46,"line":81},[44,578,371],{"class":61},[44,580,374],{"class":57},[44,582,62],{"class":61},[44,584,379],{"class":61},[44,586,587],{"class":91}," chromium.",[44,589,385],{"class":87},[44,591,388],{"class":91},[44,593,594],{"class":46,"line":95},[44,595,596],{"class":91},"    proxy: {\n",[44,598,599,602,605],{"class":46,"line":108},[44,600,601],{"class":91},"      server: ",[44,603,604],{"class":104},"\"http:\u002F\u002Fproxy.eproxies.net:23333\"",[44,606,225],{"class":91},[44,608,609,612,614],{"class":46,"line":126},[44,610,611],{"class":91},"      username: ",[44,613,445],{"class":104},[44,615,225],{"class":91},[44,617,618,621,623],{"class":46,"line":244},[44,619,620],{"class":91},"      password: ",[44,622,455],{"class":104},[44,624,225],{"class":91},[44,626,627],{"class":46,"line":250},[44,628,629],{"class":91},"    },\n",[44,631,632],{"class":46,"line":255},[44,633,404],{"class":91},[44,635,636,638,640,642,644,646,648],{"class":46,"line":274},[44,637,371],{"class":61},[44,639,411],{"class":57},[44,641,62],{"class":61},[44,643,379],{"class":61},[44,645,418],{"class":91},[44,647,421],{"class":87},[44,649,424],{"class":91},[44,651,652,654,656,658,660,662],{"class":46,"line":286},[44,653,429],{"class":61},[44,655,432],{"class":91},[44,657,470],{"class":87},[44,659,341],{"class":91},[44,661,475],{"class":104},[44,663,347],{"class":91},[44,665,666,668,670,672,674,676,679,681,684],{"class":46,"line":295},[44,667,482],{"class":91},[44,669,485],{"class":87},[44,671,341],{"class":91},[44,673,490],{"class":61},[44,675,432],{"class":91},[44,677,678],{"class":87},"textContent",[44,680,341],{"class":91},[44,682,683],{"class":104},"\"body\"",[44,685,686],{"class":91},"));\n",[44,688,689,691,693,695],{"class":46,"line":517},[44,690,429],{"class":61},[44,692,418],{"class":91},[44,694,512],{"class":87},[44,696,424],{"class":91},[44,698,700],{"class":46,"line":699},16,[44,701,520],{"class":91},[35,703,705],{"className":37,"code":704,"language":39,"meta":40,"style":40},"# Python\nfrom playwright.sync_api import sync_playwright\n\nwith sync_playwright() as p:\n    browser = p.chromium.launch(proxy={\n        \"server\": \"http:\u002F\u002Fproxy.eproxies.net:23333\",\n        \"username\": \"USERNAME-pool-flow-region-US\",\n        \"password\": \"PASSWORD\",\n    })\n    page = browser.new_page()\n    page.goto(\"https:\u002F\u002Fipinfo.io\u002Fjson\")\n    print(page.text_content(\"body\"))\n    browser.close()\n",[14,706,707,712,724,728,742,760,771,782,793,798,808,817,830],{"__ignoreMap":40},[44,708,709],{"class":46,"line":47},[44,710,711],{"class":50},"# Python\n",[44,713,714,716,719,721],{"class":46,"line":54},[44,715,180],{"class":61},[44,717,718],{"class":91}," playwright.sync_api ",[44,720,186],{"class":61},[44,722,723],{"class":91}," sync_playwright\n",[44,725,726],{"class":46,"line":68},[44,727,72],{"emptyLinePlaceholder":71},[44,729,730,733,736,739],{"class":46,"line":75},[44,731,732],{"class":61},"with",[44,734,735],{"class":91}," sync_playwright() ",[44,737,738],{"class":61},"as",[44,740,741],{"class":91}," p:\n",[44,743,744,747,749,752,755,757],{"class":46,"line":81},[44,745,746],{"class":91},"    browser ",[44,748,101],{"class":61},[44,750,751],{"class":91}," p.chromium.launch(",[44,753,754],{"class":135},"proxy",[44,756,101],{"class":61},[44,758,759],{"class":91},"{\n",[44,761,762,765,767,769],{"class":46,"line":95},[44,763,764],{"class":104},"        \"server\"",[44,766,219],{"class":91},[44,768,604],{"class":104},[44,770,225],{"class":91},[44,772,773,776,778,780],{"class":46,"line":108},[44,774,775],{"class":104},"        \"username\"",[44,777,219],{"class":91},[44,779,445],{"class":104},[44,781,225],{"class":91},[44,783,784,787,789,791],{"class":46,"line":126},[44,785,786],{"class":104},"        \"password\"",[44,788,219],{"class":91},[44,790,455],{"class":104},[44,792,225],{"class":91},[44,794,795],{"class":46,"line":244},[44,796,797],{"class":91},"    })\n",[44,799,800,803,805],{"class":46,"line":250},[44,801,802],{"class":91},"    page ",[44,804,101],{"class":61},[44,806,807],{"class":91}," browser.new_page()\n",[44,809,810,813,815],{"class":46,"line":255},[44,811,812],{"class":91},"    page.goto(",[44,814,475],{"class":104},[44,816,283],{"class":91},[44,818,819,822,825,827],{"class":46,"line":274},[44,820,821],{"class":57},"    print",[44,823,824],{"class":91},"(page.text_content(",[44,826,683],{"class":104},[44,828,829],{"class":91},"))\n",[44,831,832],{"class":46,"line":286},[44,833,834],{"class":91},"    browser.close()\n",[23,836,838],{"id":837},"ai-агенты-конвейеры-данных-для-llm","AI-агенты \u002F конвейеры данных для LLM",[10,840,841],{},"Если браузером управляет LLM или данные собирает агент (инструменты LangChain, Browser Use, самописные агенты), просто передайте конфигурацию прокси любого из фреймворков выше. Ключевые моменты:",[843,844,845,857,864],"ul",{},[846,847,848,849,851,852,856],"li",{},"Выдавайте каждому параллельному агенту отдельный ",[14,850,153],{},", чтобы они не мешали друг другу (",[303,853,855],{"href":854},"\u002Fdocs\u002Fusage\u002Fsession-control","пример с несколькими сессиями",").",[846,858,859,860,863],{},"Пусть агент в начале задачи сначала запрашивает ",[14,861,862],{},"https:\u002F\u002Fipinfo.io"," и проверяет выходной IP, и только затем выполняет основную работу.",[846,865,866,867,154],{},"Весь синтаксис параметров на одной странице: ",[303,868,870],{"href":869},"\u002Fdocs\u002Fagent-reference","Шпаргалка для агентов",[23,872,874],{"id":873},"инструменты-сбора-данных","Инструменты сбора данных",[10,876,877,878,884,885,884,889,884,894,884,899],{},"Официальные руководства по настройке графических инструментов парсинга: ",[303,879,883],{"href":880,"rel":881},"https:\u002F\u002Fwww.eproxies.io\u002Fintegrations\u002Foctoparse",[882],"nofollow","Octoparse"," · ",[303,886,26],{"href":887,"rel":888},"https:\u002F\u002Fwww.eproxies.io\u002Fintegrations\u002Fscrapy",[882],[303,890,893],{"href":891,"rel":892},"https:\u002F\u002Fwww.eproxies.io\u002Fintegrations\u002Fscrapestorm",[882],"ScrapeStorm",[303,895,898],{"href":896,"rel":897},"https:\u002F\u002Fwww.eproxies.io\u002Fintegrations\u002Fsellersprite",[882],"SellerSprite",[303,900,903],{"href":901,"rel":902},"https:\u002F\u002Fwww.eproxies.io\u002Fintegrations\u002Fhelium10",[882],"Helium 10",[905,906,907],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":40,"searchDepth":54,"depth":54,"links":909},[910,911,912,913,914,915],{"id":25,"depth":54,"text":26},{"id":157,"depth":54,"text":158},{"id":317,"depth":54,"text":318},{"id":523,"depth":54,"text":524},{"id":837,"depth":54,"text":838},{"id":873,"depth":54,"text":874},"Подключение Selenium, Puppeteer, Playwright, Scrapy и других фреймворков автоматизации и парсинга. Все примеры запускаются после замены USERNAME и PASSW…","md",null,{},"\u002Fdocs\u002Fru\u002Fintegrations\u002Fautomation-frameworks",{"title":5,"description":916},"docs\u002Fru\u002Fintegrations\u002Fautomation-frameworks","3DbLufDOKpYDh-vDMrCpnDYcoXDbVh2vO3LaV_Y2Sy4",1785671056168]