mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2026-01-11 19:43:07 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35c2f09202 | ||
|
|
197258e921 |
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## v2.2.10 (2022/10/22)
|
||||
|
||||
* Detect DDoS-Guard through title content
|
||||
|
||||
## v2.2.9 (2022/09/25)
|
||||
|
||||
* Detect Cloudflare Access Denied
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "flaresolverr",
|
||||
"version": "2.2.9",
|
||||
"version": "2.2.10",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "flaresolverr",
|
||||
"version": "2.2.9",
|
||||
"version": "2.2.10",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "flaresolverr",
|
||||
"version": "2.2.9",
|
||||
"version": "2.2.10",
|
||||
"description": "Proxy server to bypass Cloudflare protection.",
|
||||
"scripts": {
|
||||
"install": "node install.js",
|
||||
|
||||
@@ -15,6 +15,9 @@ const CHALLENGE_SELECTORS: string[] = [
|
||||
'#link-ddg', // DDoS-GUARD
|
||||
'td.info #js_info' // Custom CloudFlare for EbookParadijs, Film-Paleis, MuziekFabriek and Puur-Hollands
|
||||
];
|
||||
const CHALLENGE_TITLES: string[] = [
|
||||
'DDOS-GUARD'
|
||||
];
|
||||
const CAPTCHA_SELECTORS: string[] = [
|
||||
// todo: deprecate 'input[name="cf_captcha_kind"]'
|
||||
'#cf-challenge-hcaptcha-wrapper', '#cf-norobot-container', 'input[name="cf_captcha_kind"]'
|
||||
@@ -49,7 +52,7 @@ export default async function resolveChallenge(url: string, page: Page, response
|
||||
|
||||
// find Cloudflare selectors
|
||||
let selectorFound = false;
|
||||
let selector: string = await findAnySelector(page, CHALLENGE_SELECTORS)
|
||||
let selector: string = await findChallenge(page)
|
||||
if (selector) {
|
||||
selectorFound = true;
|
||||
log.debug(`Javascript challenge element '${selector}' detected.`)
|
||||
@@ -58,7 +61,7 @@ export default async function resolveChallenge(url: string, page: Page, response
|
||||
while (true) {
|
||||
try {
|
||||
|
||||
selector = await findAnySelector(page, CHALLENGE_SELECTORS)
|
||||
selector = await findChallenge(page)
|
||||
if (!selector) {
|
||||
// solved!
|
||||
log.debug('Challenge element not found')
|
||||
@@ -124,6 +127,20 @@ export default async function resolveChallenge(url: string, page: Page, response
|
||||
return response;
|
||||
}
|
||||
|
||||
async function findChallenge(page: Page): Promise<string|null> {
|
||||
const selector = await findAnySelector(page, CHALLENGE_SELECTORS);
|
||||
|
||||
if (selector == null) {
|
||||
const title = await page.title();
|
||||
|
||||
if (CHALLENGE_TITLES.includes(title)) {
|
||||
return `:title[${title}]`;
|
||||
}
|
||||
}
|
||||
|
||||
return selector;
|
||||
}
|
||||
|
||||
async function findAnySelector(page: Page, selectors: string[]) {
|
||||
for (const selector of selectors) {
|
||||
const cfChallengeElem = await page.$(selector)
|
||||
|
||||
Reference in New Issue
Block a user