Skip to content

Commit bf9474c

Browse files
authored
WebsiteBypass: Added custom ip/port for flaresolverr (#2680)
* add flaresolverr ip and port to websitebypass_config add flaresolverr ip and port to websitebypass_config * fix #2677 fix #2677 * Update cloudflare.lua edit the script to skip checking flaresolverr if use_webdriver is set to false, and update logging
1 parent 3214ab0 commit bf9474c

File tree

3 files changed

+60
-19
lines changed

3 files changed

+60
-19
lines changed

lua/websitebypass/cloudflare.lua

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ function _m.solveWithWebDriver(self, url)
166166
local cmd_ = {webdriver_exe}
167167
table.insert(cmd_, webdriver_script)
168168
table.insert(cmd_, rooturl)
169+
table.insert(cmd_, "--flaresolverr-ip")
170+
table.insert(cmd_, webdriver_ip)
171+
table.insert(cmd_, "--flaresolverr-port")
172+
table.insert(cmd_, webdriver_port)
169173

170174
if webdriver_testing then
171175
table.insert(cmd_, "--testing")
@@ -270,7 +274,9 @@ function load_config()
270274
local config_table = {
271275
use_webdriver = false,
272276
testing = false,
273-
debug = false
277+
debug = false,
278+
flaresolverr_ip = "localhost",
279+
flaresolverr_port = 8191
274280
}
275281

276282
local json_string = json.encode(config_table)
@@ -306,6 +312,16 @@ function load_config()
306312
use_webdriver = config_table['use_webdriver']
307313
webdriver_testing = config_table['testing']
308314
webdriver_debug = config_table['debug']
315+
if config_table['flaresolverr_ip'] ~= nil then
316+
webdriver_ip = config_table['flaresolverr_ip']
317+
else
318+
webdriver_ip = "localhost"
319+
end
320+
if config_table['flaresolverr_port'] ~= nil then
321+
webdriver_port = config_table['flaresolverr_port']
322+
else
323+
webdriver_port = 8191
324+
end
309325
end
310326
end
311327

@@ -327,15 +343,20 @@ function _m.bypass(self, METHOD, URL)
327343
webdriver_exe = 'python'
328344
webdriver_script = [[lua\websitebypass\cloudflare.py]]
329345
flaresolverr = false
330-
-- use FlareSolverr url to check if it running
331-
HTTP.GET('http://127.0.0.1:8191/')
332-
if (HTTP.ResultCode == 200) then
333-
local x = CreateTXQuery(HTTP.Document)
334-
local requestJSON = x.XPath('json(*)')
335-
if (x.XPathString('msg', requestJSON) == "FlareSolverr is ready!") then
336-
print('WebsiteBypass[cloudflare]: FlareSolverr is running')
337-
flaresolverr = true
346+
if use_webdriver then
347+
-- use FlareSolverr url to check if it running
348+
local flareSolverr_url = 'http://' .. webdriver_ip .. ':' .. webdriver_port .. '/'
349+
HTTP.GET(flareSolverr_url)
350+
if (HTTP.ResultCode == 200) then
351+
local x = CreateTXQuery(HTTP.Document)
352+
local requestJSON = x.XPath('json(*)')
353+
if (x.XPathString('msg', requestJSON) == "FlareSolverr is ready!") then
354+
print('WebsiteBypass[cloudflare]: FlareSolverr is running')
355+
flaresolverr = true
356+
end
338357
end
358+
else
359+
print("WebsiteBypass[cloudflare]: Webdriver isn't enabled")
339360
end
340361

341362
if HTTP.RetryCount > maxretry then

lua/websitebypass/cloudflare.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import base64
77
from pathlib import Path
88
from datetime import datetime, timedelta
9-
from urllib.parse import urlparse
9+
from urllib.parse import urlparse, urlunparse
1010

1111
try:
1212
import rookiepy
@@ -22,7 +22,8 @@
2222
debug_path = (websitebypass_path / 'debug').resolve()
2323

2424
class CloudSolver:
25-
def __init__(self, debug=False, testing_result=False):
25+
def __init__(self, debug=False, testing_result=False,
26+
flare_ip= "localhost", flare_port= 8191):
2627
if not (debug or testing_result):
2728
logging.disable()
2829
else:
@@ -32,6 +33,8 @@ def __init__(self, debug=False, testing_result=False):
3233
level=logging.INFO)
3334
self.debug = debug
3435
self.testing_result = testing_result
36+
flare_api_parsed = urlparse('http://localhost:8191/v1')
37+
self.flare_api_parsed = flare_api_parsed._replace(netloc=f"{flare_ip}:{flare_port}" if flare_port else flare_ip)
3538
# just random UUID
3639
self.session_id = 'e69e9ce7-8118-470c-a069-13af7bee6e8b'
3740
self.post_body = {"cmd": "request.get",
@@ -55,14 +58,14 @@ def try_to_clear_sessions(self):
5558

5659
if cloudflare_json.get('next_run') < datetime.now().timestamp():
5760
sessions_list = requests.post(
58-
'http://localhost:8191/v1',
61+
self.flare_api_parsed.geturl(),
5962
headers= {'Content-Type': 'application/json'},
6063
json= {"cmd": "sessions.list",}
6164
).json()['sessions']
6265
logging.info(f'flaresolverr sessions list: {sessions_list}')
6366
if self.session_id in sessions_list:
6467
requests.post(
65-
'http://localhost:8191/v1',
68+
self.flare_api_parsed.geturl(),
6669
headers= {'Content-Type': 'application/json'},
6770
json= {"cmd": "sessions.destroy",
6871
"session": self.session_id}
@@ -75,7 +78,7 @@ def try_to_clear_sessions(self):
7578

7679
def solve_flare(self, url_):
7780
try:
78-
test_flaresolver = requests.get('http://127.0.0.1:8191/')
81+
test_flaresolver = requests.get(self.flare_api_parsed._replace(path='').geturl())
7982
if test_flaresolver.status_code == 200:
8083
if test_flaresolver.json()['msg'] != 'FlareSolverr is ready!':
8184
logging.info('FlareSolverr is not running!')
@@ -87,7 +90,7 @@ def solve_flare(self, url_):
8790
post_body = self.post_body
8891
post_body['url'] = url_
8992
response = requests.post(
90-
'http://localhost:8191/v1',
93+
self.flare_api_parsed.geturl(),
9194
headers={'Content-Type': 'application/json'},
9295
json=post_body)
9396
logging.info(response.status_code)
@@ -238,11 +241,26 @@ def parse_arguments():
238241
action="store_true",
239242
help="Enable testing restult mode."
240243
)
244+
245+
# Use custom Flaresolverr ip
246+
parser.add_argument(
247+
"-Fip", "--flaresolverr-ip",
248+
default= "localhost",
249+
help="Use custom Flaresolverr ip.(default: %(default)s)"
250+
)
251+
252+
# Use custom Flaresolverr port
253+
parser.add_argument(
254+
"-Fp", "--flaresolverr-port",
255+
default= 8191,
256+
help="Use custom Flaresolverr port.(default: %(default)s)"
257+
)
241258

242259
return parser.parse_args()
243260

244261

245262
if __name__ == "__main__":
246263
args = parse_arguments()
247-
cloudsolver = CloudSolver(debug= args.debug,testing_result=args.testing)
264+
cloudsolver = CloudSolver(debug=args.debug, testing_result=args.testing,
265+
flare_ip= args.flaresolverr_ip, flare_port= args.flaresolverr_port)
248266
cloudsolver.solve(args.Url)
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{
2-
"use_webdriver": false,
3-
"testing": false,
4-
"debug": false
2+
"use_webdriver": false,
3+
"debug": false,
4+
"flaresolverr_port": 8191,
5+
"testing": false,
6+
"flaresolverr_ip": "localhost"
57
}

0 commit comments

Comments
 (0)