-
Notifications
You must be signed in to change notification settings - Fork 36
/
cloudflare_advanced.js
131 lines (99 loc) · 3.93 KB
/
cloudflare_advanced.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
Cloudflare bypass with AntiBotCookieTask from Anti-Captcha.com.
Install dependencies:
npm install @antiadmin/anticaptchaofficial puppeteer
* */
const anticaptcha = require("@antiadmin/anticaptchaofficial");
const pup = require('puppeteer');
//address behind cloudflare
const checkUrl = 'https://www.sportsbikeshop.co.uk/';
const domainName = 'www.sportsbikeshop.co.uk';
//Anti-captcha.com API key
const apiKey = 'API_KEY_HERE';
// STOP! IMPORTANT! Shared proxy services won't work!
// Use ONLY self-installed proxies on your own infrastructure! Instruction: https://anti-captcha.com/apidoc/articles/how-to-install-squid
// Again and again people people insist they have best purchased proxies. NO YOU DO NOT!
// Absolutely recommended to read this FAQ about proxies: https://anti-captcha.com/faq/510_questions_about_solving_recaptcha_with_proxy__applies_to_funcaptcha__geetest__hcaptcha_
const proxyAddress = '1.2.3.4';
const proxyPort = 1234;
const proxyLogin = 'mylogin';
const proxyPassword = 'mypass';
let browser = null;
let page = null;
(async () => {
anticaptcha.setAPIKey(apiKey);
const balance = await anticaptcha.getBalance();
if (balance <= 0) {
console.log('Topup your anti-captcha.com balance!');
return;
} else {
console.log('API key balance is '+balance+', continuing');
// anticaptcha.shutUp(); //uncomment for silent captcha recognition
}
let antigateResult = null;
try {
antigateResult = await anticaptcha.solveAntiBotCookieTask(
checkUrl,
proxyAddress,
proxyPort,
proxyLogin,
proxyPassword);
} catch (e) {
console.error("could not solve captcha: "+e.toString());
return;
}
const fingerPrint = antigateResult.fingerprint;
try {
console.log('opening browser ..');
let options = {
headless: true, //disable to see the browser window
devtools: false, //enable to see developers console
args: [
'--window-size='+fingerPrint['self.screen.width']+','+fingerPrint['self.screen.height'],
`--proxy-server=${proxyAddress}:${proxyPort}`
],
};
browser = await pup.launch(options);
console.log('creating new page ..');
page = await browser.newPage();
} catch (e) {
console.log("could not open browser: "+e);
return false;
}
if (proxyPassword && proxyLogin) {
console.log(`setting proxy authentication ${proxyLogin}:${proxyPassword}`);
await page.authenticate({
username: proxyLogin,
password: proxyPassword,
});
}
//screen size
console.log('setting view port to '+fingerPrint['self.screen.width']+'x'+fingerPrint['self.screen.height']);
await page.setViewport({width: fingerPrint['self.screen.width'], height: fingerPrint['self.screen.height']});
//user agent
let userAgent = '';
if (fingerPrint['self.navigator.userAgent']) {
userAgent = fingerPrint['self.navigator.userAgent'];
} else {
if (fingerPrint['self.navigator.appVersion'] && fingerPrint['self.navigator.appCodeName']) {
userAgent = fingerPrint['self.navigator.appCodeName'] + '/' + fingerPrint['self.navigator.appVersion']
}
}
console.log('setting browser user agent to '+userAgent);
await page.setUserAgent(userAgent);
console.log('setting cookies', antigateResult.cookies);
let cookies = [];
for (const name in antigateResult.cookies) {
cookies.push({ name: name, value: antigateResult.cookies[name], domain: domainName })
}
await page.setCookie(...cookies);
try {
await page.goto(antigateResult.url, {
waitUntil: "networkidle0"
});
} catch (e) {
console.log('err while loading the page: '+e);
}
const htmlContent = await page.content();
console.log("page content:\n\n", htmlContent);
})();