Я работаю с AWS Lambda и Puppeteer, который поставляется с собственными проблемами против работы на местном уровне с кукловом. Я иногда использую 2Captcha Services, и это показывает, что они обладают способностями решать облачный флюр, что именно мне нужно. Однако, используя решение, которое они предоставляют здесь https://github.com/2captcha/cloudflare-demo и адаптируя кукольник для AWS Lambda, страница CloudFlare, кажется, находится в бесконечной цикле решенного Локально и с кукловодом без головы, он работает просто отлично. Кажется, я не могу точно определить, что заставляет его не работать в AWS Lambda. Вот текущий код, который я пытаюсь запустить, без успеха. Я также попробовал прокси в случае, если это вызывает проблемы, и это тоже не помогло. < /P>
import chromium from '@sparticuz/chromium';
import { Solver } from '2captcha-ts';
import puppeteerExtra from 'puppeteer-extra';
import pluginStealth from 'puppeteer-extra-plugin-stealth';
export async function handler() {
const viewport = {
deviceScaleFactor: 1,
hasTouch: false,
height: 1080,
isLandscape: true,
isMobile: false,
width: 1920
};
const puppeteerExtraDefault = puppeteerExtra.default;
puppeteerExtraDefault.use(pluginStealth());
const args = chromium.args;
const browser = await puppeteerExtraDefault
.launch({
args: args,
defaultViewport: viewport,
executablePath: await chromium.executablePath(),
headless: 'shell'
});
console.log('browser loaded');
const [page] = await browser.pages();
page.on('console', (msg) => {
console.log('[PAGE LOG]', msg.text());
});
await page.evaluateOnNewDocument(`
console.log('Script being injected');
console.clear = () => console.log('Console was cleared')
const i = setInterval(() => {
if (window.turnstile) {
clearInterval(i)
window.turnstile.render = (a, b) => {
let params = {
sitekey: b.sitekey,
pageurl: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action,
userAgent: navigator.userAgent,
json: 1
}
// we will intercept the message in puppeeter
console.log('intercepted-params:' + JSON.stringify(params))
window.cfCallback = b.callback
return
}
}
}, 50)
`);
await page.setUserAgent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'
);
const userAgent = await page.evaluate(() => navigator.userAgent);
console.log('Current user agent:', userAgent);
const solver = new Solver('my2CaptchaKey'); // For secrecy
page.on('console', async (msg) => {
const txt = msg.text()
if (txt.includes('intercepted-params:')) {
const params = JSON.parse(txt.replace('intercepted-params:', ''))
console.log(params)
try {
console.log(`Solving the captcha...`)
const res = await solver.cloudflareTurnstile(params)
console.log(`Solved the captcha ${res.id}`)
console.log(res)
await page.evaluate((token) => {
// @ts-ignore
cfCallback(token)
}, res.data)
} catch (e) {
console.log(e.err)
return process.exit()
}
} else {
return;
}
})
// 2 captchas own demo page
await page.goto('https://2captcha.com/demo/cloudflare-tu ... -challenge')
// Wait for a total of 45 seconds for the page to load and the cloudflare to be solved
try {
await page.waitForSelector('#root > div._layout_1smur_1', { timeout: 45000 });
} catch (e) {
console.error('Error waiting for the page to load:', e);
await browser.close();
return;
}
console.log('Page loaded successfully');
await browser.close();
return '';
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... cloudflare
AWS Lambda + Puppeteer + Cloudflare ⇐ Javascript
Форум по Javascript
1753924812
Anonymous
Я работаю с AWS Lambda и Puppeteer, который поставляется с собственными проблемами против работы на местном уровне с кукловом. Я иногда использую 2Captcha Services, и это показывает, что они обладают способностями решать облачный флюр, что именно мне нужно. Однако, используя решение, которое они предоставляют здесь https://github.com/2captcha/cloudflare-demo и адаптируя кукольник для AWS Lambda, страница CloudFlare, кажется, находится в бесконечной цикле решенного Локально и с кукловодом без головы, он работает просто отлично. Кажется, я не могу точно определить, что заставляет его не работать в AWS Lambda. Вот текущий код, который я пытаюсь запустить, без успеха. Я также попробовал прокси в случае, если это вызывает проблемы, и это тоже не помогло. < /P>
import chromium from '@sparticuz/chromium';
import { Solver } from '2captcha-ts';
import puppeteerExtra from 'puppeteer-extra';
import pluginStealth from 'puppeteer-extra-plugin-stealth';
export async function handler() {
const viewport = {
deviceScaleFactor: 1,
hasTouch: false,
height: 1080,
isLandscape: true,
isMobile: false,
width: 1920
};
const puppeteerExtraDefault = puppeteerExtra.default;
puppeteerExtraDefault.use(pluginStealth());
const args = chromium.args;
const browser = await puppeteerExtraDefault
.launch({
args: args,
defaultViewport: viewport,
executablePath: await chromium.executablePath(),
headless: 'shell'
});
console.log('browser loaded');
const [page] = await browser.pages();
page.on('console', (msg) => {
console.log('[PAGE LOG]', msg.text());
});
await page.evaluateOnNewDocument(`
console.log('Script being injected');
console.clear = () => console.log('Console was cleared')
const i = setInterval(() => {
if (window.turnstile) {
clearInterval(i)
window.turnstile.render = (a, b) => {
let params = {
sitekey: b.sitekey,
pageurl: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action,
userAgent: navigator.userAgent,
json: 1
}
// we will intercept the message in puppeeter
console.log('intercepted-params:' + JSON.stringify(params))
window.cfCallback = b.callback
return
}
}
}, 50)
`);
await page.setUserAgent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'
);
const userAgent = await page.evaluate(() => navigator.userAgent);
console.log('Current user agent:', userAgent);
const solver = new Solver('my2CaptchaKey'); // For secrecy
page.on('console', async (msg) => {
const txt = msg.text()
if (txt.includes('intercepted-params:')) {
const params = JSON.parse(txt.replace('intercepted-params:', ''))
console.log(params)
try {
console.log(`Solving the captcha...`)
const res = await solver.cloudflareTurnstile(params)
console.log(`Solved the captcha ${res.id}`)
console.log(res)
await page.evaluate((token) => {
// @ts-ignore
cfCallback(token)
}, res.data)
} catch (e) {
console.log(e.err)
return process.exit()
}
} else {
return;
}
})
// 2 captchas own demo page
await page.goto('https://2captcha.com/demo/cloudflare-turnstile-challenge')
// Wait for a total of 45 seconds for the page to load and the cloudflare to be solved
try {
await page.waitForSelector('#root > div._layout_1smur_1', { timeout: 45000 });
} catch (e) {
console.error('Error waiting for the page to load:', e);
await browser.close();
return;
}
console.log('Page loaded successfully');
await browser.close();
return '';
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79720611/aws-lambda-puppeteer-cloudflare[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия