quasarr 1.21.2__tar.gz → 1.23.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of quasarr might be problematic. Click here for more details.
- {quasarr-1.21.2 → quasarr-1.23.0}/PKG-INFO +1 -1
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/api/captcha/__init__.py +162 -48
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/dl.py +4 -1
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/obfuscated.py +30 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/version.py +1 -1
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/wx.py +1 -6
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/PKG-INFO +1 -1
- {quasarr-1.21.2 → quasarr-1.23.0}/LICENSE +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/README.md +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/api/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/api/arr/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/api/config/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/api/sponsors_helper/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/api/statistics/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/linkcrypters/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/linkcrypters/al.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/linkcrypters/hide.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/packages/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/al.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/by.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/dd.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/dj.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/dt.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/dw.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/he.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/mb.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/nk.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/nx.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/sf.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/sj.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/sl.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/wd.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/downloads/sources/wx.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/cloudflare.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/html_images.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/html_templates.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/imdb_metadata.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/log.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/myjd_api.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/notifications.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/sessions/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/sessions/al.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/sessions/dd.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/sessions/dl.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/sessions/nx.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/shared_state.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/statistics.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/providers/web_server.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/al.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/by.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/dd.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/dj.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/dl.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/dt.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/dw.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/fx.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/he.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/mb.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/nk.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/nx.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/sf.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/sj.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/sl.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/search/sources/wd.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/storage/__init__.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/storage/config.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/storage/setup.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr/storage/sqlite_database.py +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/SOURCES.txt +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/dependency_links.txt +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/entry_points.txt +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/not-zip-safe +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/requires.txt +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/quasarr.egg-info/top_level.txt +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/setup.cfg +0 -0
- {quasarr-1.21.2 → quasarr-1.23.0}/setup.py +0 -0
|
@@ -13,10 +13,10 @@ from bottle import request, response, redirect
|
|
|
13
13
|
import quasarr.providers.html_images as images
|
|
14
14
|
from quasarr.downloads.linkcrypters.filecrypt import get_filecrypt_links, DLC
|
|
15
15
|
from quasarr.downloads.packages import delete_package
|
|
16
|
+
from quasarr.providers import obfuscated
|
|
16
17
|
from quasarr.providers import shared_state
|
|
17
18
|
from quasarr.providers.html_templates import render_button, render_centered_html
|
|
18
19
|
from quasarr.providers.log import info, debug
|
|
19
|
-
from quasarr.providers.obfuscated import captcha_js, captcha_values, filecrypt_user_js, junkies_user_js
|
|
20
20
|
from quasarr.providers.statistics import StatsHelper
|
|
21
21
|
|
|
22
22
|
|
|
@@ -87,9 +87,27 @@ def setup_captcha_routes(app):
|
|
|
87
87
|
for link in prioritized_links
|
|
88
88
|
)
|
|
89
89
|
|
|
90
|
+
# KeepLinks uses nested arrays like FileCrypt: [["url", "mirror"]]
|
|
91
|
+
has_keeplinks_links = any(
|
|
92
|
+
("keeplinks." in link[0] if isinstance(link, (list, tuple)) else "keeplinks." in link)
|
|
93
|
+
for link in prioritized_links
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
# ToLink uses nested arrays like FileCrypt: [["url", "mirror"]]
|
|
97
|
+
has_tolink_links = any(
|
|
98
|
+
("tolink." in link[0] if isinstance(link, (list, tuple)) else "tolink." in link)
|
|
99
|
+
for link in prioritized_links
|
|
100
|
+
)
|
|
101
|
+
|
|
90
102
|
if has_junkies_links:
|
|
91
103
|
debug("Redirecting to Junkies CAPTCHA")
|
|
92
104
|
redirect(f"/captcha/junkies?data={quote(encoded_payload)}")
|
|
105
|
+
elif has_keeplinks_links:
|
|
106
|
+
debug("Redirecting to KeepLinks CAPTCHA")
|
|
107
|
+
redirect(f"/captcha/keeplinks?data={quote(encoded_payload)}")
|
|
108
|
+
elif has_tolink_links:
|
|
109
|
+
debug("Redirecting to ToLink CAPTCHA")
|
|
110
|
+
redirect(f"/captcha/tolink?data={quote(encoded_payload)}")
|
|
93
111
|
elif filecrypt_session:
|
|
94
112
|
debug(f'Redirecting to circle CAPTCHA')
|
|
95
113
|
redirect(f"/captcha/circle?data={quote(encoded_payload)}")
|
|
@@ -111,45 +129,25 @@ def setup_captcha_routes(app):
|
|
|
111
129
|
except Exception as e:
|
|
112
130
|
return {"error": f"Failed to decode payload: {str(e)}"}
|
|
113
131
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
payload = decode_payload()
|
|
132
|
+
def render_userscript_section(url, package_id, title, password, provider_type="junkies"):
|
|
133
|
+
"""Render the userscript UI section for Junkies, KeepLinks, or ToLink pages
|
|
117
134
|
|
|
118
|
-
|
|
119
|
-
return render_centered_html(f'''<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
120
|
-
<p>{payload["error"]}</p>
|
|
121
|
-
<p>
|
|
122
|
-
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
123
|
-
</p>''')
|
|
124
|
-
|
|
125
|
-
package_id = payload.get("package_id")
|
|
126
|
-
title = payload.get("title")
|
|
127
|
-
password = payload.get("password")
|
|
128
|
-
urls = payload.get("links")
|
|
129
|
-
url = urls[0]
|
|
135
|
+
This is the MAIN solution for these providers (not a bypass/fallback).
|
|
130
136
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
<p>
|
|
139
|
-
{render_button("Delete Package", "secondary", {"onclick": f"location.href='/captcha/delete/{package_id}'"})}
|
|
140
|
-
</p>
|
|
141
|
-
<p>
|
|
142
|
-
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
143
|
-
</p>
|
|
144
|
-
|
|
145
|
-
</body>
|
|
146
|
-
</html>""")
|
|
137
|
+
Args:
|
|
138
|
+
url: The URL to open with transfer params
|
|
139
|
+
package_id: Package identifier
|
|
140
|
+
title: Package title
|
|
141
|
+
password: Package password
|
|
142
|
+
provider_type: Either "junkies", "keeplinks", or "tolink"
|
|
143
|
+
"""
|
|
147
144
|
|
|
148
|
-
|
|
149
|
-
|
|
145
|
+
provider_names = {"junkies": "Junkies", "keeplinks": "KeepLinks", "tolink": "ToLink"}
|
|
146
|
+
provider_name = provider_names.get(provider_type, "Provider")
|
|
147
|
+
userscript_url = f"/captcha/{provider_type}.user.js"
|
|
148
|
+
storage_key = f"hide{provider_name}SetupInstructions"
|
|
150
149
|
|
|
151
150
|
# Generate userscript URL with transfer params
|
|
152
|
-
# Get base URL of current request
|
|
153
151
|
base_url = request.urlparts.scheme + '://' + request.urlparts.netloc
|
|
154
152
|
transfer_url = f"{base_url}/captcha/quick-transfer"
|
|
155
153
|
|
|
@@ -170,7 +168,7 @@ def setup_captcha_routes(app):
|
|
|
170
168
|
<a href="https://www.tampermonkey.net/" target="_blank" rel="noopener noreferrer">1. Install Tampermonkey</a>
|
|
171
169
|
</p>
|
|
172
170
|
<p style="margin-top: 0; margin-bottom: 12px;">
|
|
173
|
-
<a href="
|
|
171
|
+
<a href="{userscript_url}" target="_blank">2. Install this userscript</a>
|
|
174
172
|
</p>
|
|
175
173
|
<p style="margin-top: 0;">
|
|
176
174
|
<button id="hide-setup-btn" type="button" style="background: #444; color: #fff; border: 1px solid #666; padding: 6px 12px; border-radius: 4px; cursor: pointer;">
|
|
@@ -203,7 +201,7 @@ def setup_captcha_routes(app):
|
|
|
203
201
|
</div>
|
|
204
202
|
<script>
|
|
205
203
|
// Handle setup instructions hide/show
|
|
206
|
-
const hideSetup = localStorage.getItem('
|
|
204
|
+
const hideSetup = localStorage.getItem('{storage_key}');
|
|
207
205
|
const setupBox = document.getElementById('setup-instructions');
|
|
208
206
|
const showLink = document.getElementById('show-instructions-link');
|
|
209
207
|
|
|
@@ -214,7 +212,7 @@ def setup_captcha_routes(app):
|
|
|
214
212
|
|
|
215
213
|
// Hide setup instructions
|
|
216
214
|
document.getElementById('hide-setup-btn').addEventListener('click', function() {{
|
|
217
|
-
localStorage.setItem('
|
|
215
|
+
localStorage.setItem('{storage_key}', 'true');
|
|
218
216
|
setupBox.style.display = 'none';
|
|
219
217
|
showLink.style.display = 'block';
|
|
220
218
|
}});
|
|
@@ -222,25 +220,141 @@ def setup_captcha_routes(app):
|
|
|
222
220
|
// Show setup instructions again
|
|
223
221
|
document.getElementById('show-setup-btn').addEventListener('click', function(e) {{
|
|
224
222
|
e.preventDefault();
|
|
225
|
-
localStorage.setItem('
|
|
223
|
+
localStorage.setItem('{storage_key}', 'false');
|
|
226
224
|
setupBox.style.display = 'block';
|
|
227
225
|
showLink.style.display = 'none';
|
|
228
226
|
}});
|
|
229
227
|
</script>
|
|
230
228
|
'''
|
|
231
229
|
|
|
230
|
+
@app.get("/captcha/junkies")
|
|
231
|
+
def serve_junkies_captcha():
|
|
232
|
+
payload = decode_payload()
|
|
233
|
+
|
|
234
|
+
if "error" in payload:
|
|
235
|
+
return render_centered_html(f'''<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
236
|
+
<p>{payload["error"]}</p>
|
|
237
|
+
<p>
|
|
238
|
+
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
239
|
+
</p>''')
|
|
240
|
+
|
|
241
|
+
package_id = payload.get("package_id")
|
|
242
|
+
title = payload.get("title")
|
|
243
|
+
password = payload.get("password")
|
|
244
|
+
urls = payload.get("links")
|
|
245
|
+
url = urls[0]
|
|
246
|
+
|
|
247
|
+
return render_centered_html(f"""
|
|
248
|
+
<!DOCTYPE html>
|
|
249
|
+
<html>
|
|
250
|
+
<body>
|
|
251
|
+
<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
252
|
+
<p><b>Package:</b> {title}</p>
|
|
253
|
+
{render_userscript_section(url, package_id, title, password, "junkies")}
|
|
254
|
+
<p>
|
|
255
|
+
{render_button("Delete Package", "secondary", {"onclick": f"location.href='/captcha/delete/{package_id}'"})}
|
|
256
|
+
</p>
|
|
257
|
+
<p>
|
|
258
|
+
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
259
|
+
</p>
|
|
260
|
+
|
|
261
|
+
</body>
|
|
262
|
+
</html>""")
|
|
263
|
+
|
|
264
|
+
@app.get("/captcha/keeplinks")
|
|
265
|
+
def serve_keeplinks_captcha():
|
|
266
|
+
payload = decode_payload()
|
|
267
|
+
|
|
268
|
+
if "error" in payload:
|
|
269
|
+
return render_centered_html(f'''<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
270
|
+
<p>{payload["error"]}</p>
|
|
271
|
+
<p>
|
|
272
|
+
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
273
|
+
</p>''')
|
|
274
|
+
|
|
275
|
+
package_id = payload.get("package_id")
|
|
276
|
+
title = payload.get("title")
|
|
277
|
+
password = payload.get("password")
|
|
278
|
+
urls = payload.get("links")
|
|
279
|
+
# KeepLinks uses nested arrays like FileCrypt: [["url", "mirror"]]
|
|
280
|
+
url = urls[0][0] if isinstance(urls[0], (list, tuple)) else urls[0]
|
|
281
|
+
|
|
282
|
+
return render_centered_html(f"""
|
|
283
|
+
<!DOCTYPE html>
|
|
284
|
+
<html>
|
|
285
|
+
<body>
|
|
286
|
+
<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
287
|
+
<p><b>Package:</b> {title}</p>
|
|
288
|
+
{render_userscript_section(url, package_id, title, password, "keeplinks")}
|
|
289
|
+
<p>
|
|
290
|
+
{render_button("Delete Package", "secondary", {"onclick": f"location.href='/captcha/delete/{package_id}'"})}
|
|
291
|
+
</p>
|
|
292
|
+
<p>
|
|
293
|
+
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
294
|
+
</p>
|
|
295
|
+
|
|
296
|
+
</body>
|
|
297
|
+
</html>""")
|
|
298
|
+
|
|
299
|
+
@app.get("/captcha/tolink")
|
|
300
|
+
def serve_tolink_captcha():
|
|
301
|
+
payload = decode_payload()
|
|
302
|
+
|
|
303
|
+
if "error" in payload:
|
|
304
|
+
return render_centered_html(f'''<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
305
|
+
<p>{payload["error"]}</p>
|
|
306
|
+
<p>
|
|
307
|
+
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
308
|
+
</p>''')
|
|
309
|
+
|
|
310
|
+
package_id = payload.get("package_id")
|
|
311
|
+
title = payload.get("title")
|
|
312
|
+
password = payload.get("password")
|
|
313
|
+
urls = payload.get("links")
|
|
314
|
+
# ToLink uses nested arrays like FileCrypt: [["url", "mirror"]]
|
|
315
|
+
url = urls[0][0] if isinstance(urls[0], (list, tuple)) else urls[0]
|
|
316
|
+
|
|
317
|
+
return render_centered_html(f"""
|
|
318
|
+
<!DOCTYPE html>
|
|
319
|
+
<html>
|
|
320
|
+
<body>
|
|
321
|
+
<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
322
|
+
<p><b>Package:</b> {title}</p>
|
|
323
|
+
{render_userscript_section(url, package_id, title, password, "tolink")}
|
|
324
|
+
<p>
|
|
325
|
+
{render_button("Delete Package", "secondary", {"onclick": f"location.href='/captcha/delete/{package_id}'"})}
|
|
326
|
+
</p>
|
|
327
|
+
<p>
|
|
328
|
+
{render_button("Back", "secondary", {"onclick": "location.href='/'"})}
|
|
329
|
+
</p>
|
|
330
|
+
|
|
331
|
+
</body>
|
|
332
|
+
</html>""")
|
|
333
|
+
|
|
232
334
|
@app.get('/captcha/junkies.user.js')
|
|
233
335
|
def serve_junkies_user_js():
|
|
234
336
|
sj = shared_state.values["config"]("Hostnames").get("sj")
|
|
235
337
|
dj = shared_state.values["config"]("Hostnames").get("dj")
|
|
236
338
|
|
|
237
|
-
content = junkies_user_js(sj, dj)
|
|
339
|
+
content = obfuscated.junkies_user_js(sj, dj)
|
|
340
|
+
response.content_type = 'application/javascript'
|
|
341
|
+
return content
|
|
342
|
+
|
|
343
|
+
@app.get('/captcha/keeplinks.user.js')
|
|
344
|
+
def serve_keeplinks_user_js():
|
|
345
|
+
content = obfuscated.keeplinks_user_js()
|
|
346
|
+
response.content_type = 'application/javascript'
|
|
347
|
+
return content
|
|
348
|
+
|
|
349
|
+
@app.get('/captcha/tolink.user.js')
|
|
350
|
+
def serve_tolink_user_js():
|
|
351
|
+
content = obfuscated.tolink_user_js()
|
|
238
352
|
response.content_type = 'application/javascript'
|
|
239
353
|
return content
|
|
240
354
|
|
|
241
355
|
@app.get('/captcha/filecrypt.user.js')
|
|
242
356
|
def serve_filecrypt_user_js():
|
|
243
|
-
content = filecrypt_user_js()
|
|
357
|
+
content = obfuscated.filecrypt_user_js()
|
|
244
358
|
response.content_type = 'application/javascript'
|
|
245
359
|
return content
|
|
246
360
|
|
|
@@ -567,7 +681,7 @@ def setup_captcha_routes(app):
|
|
|
567
681
|
|
|
568
682
|
content = render_centered_html(r'''
|
|
569
683
|
<script type="text/javascript">
|
|
570
|
-
var api_key = "''' + captcha_values()["api_key"] + r'''";
|
|
684
|
+
var api_key = "''' + obfuscated.captcha_values()["api_key"] + r'''";
|
|
571
685
|
var endpoint = '/' + window.location.pathname.split('/')[1] + '/' + api_key + '.html';
|
|
572
686
|
var solveAnotherHtml = `<p>''' + solve_another_html + r'''</p><p>''' + back_button_html + r'''</p>`;
|
|
573
687
|
var noMoreHtml = `<p><b>No more CAPTCHAs</b></p><p>''' + back_button_html + r'''</p>`;
|
|
@@ -621,7 +735,7 @@ def setup_captcha_routes(app):
|
|
|
621
735
|
reloadSection.style.display = "block";
|
|
622
736
|
});
|
|
623
737
|
}
|
|
624
|
-
''' + captcha_js() + f'''</script>
|
|
738
|
+
''' + obfuscated.captcha_js() + f'''</script>
|
|
625
739
|
<div>
|
|
626
740
|
<h1><img src="{images.logo}" type="image/png" alt="Quasarr logo" class="logo"/>Quasarr</h1>
|
|
627
741
|
<p id="package-title" style="max-width: 370px; word-wrap: break-word; overflow-wrap: break-word;"><b>Package:</b> {title}</p>
|
|
@@ -656,7 +770,7 @@ def setup_captcha_routes(app):
|
|
|
656
770
|
|
|
657
771
|
@app.post('/captcha/<captcha_id>.html')
|
|
658
772
|
def proxy_html(captcha_id):
|
|
659
|
-
target_url = f"{captcha_values()["url"]}/captcha/{captcha_id}.html"
|
|
773
|
+
target_url = f"{obfuscated.captcha_values()["url"]}/captcha/{captcha_id}.html"
|
|
660
774
|
|
|
661
775
|
headers = {key: value for key, value in request.headers.items() if key != 'Host'}
|
|
662
776
|
data = request.body.read()
|
|
@@ -676,7 +790,7 @@ def setup_captcha_routes(app):
|
|
|
676
790
|
|
|
677
791
|
@app.post('/captcha/<captcha_id>.json')
|
|
678
792
|
def proxy_json(captcha_id):
|
|
679
|
-
target_url = f"{captcha_values()["url"]}/captcha/{captcha_id}.json"
|
|
793
|
+
target_url = f"{obfuscated.captcha_values()["url"]}/captcha/{captcha_id}.json"
|
|
680
794
|
|
|
681
795
|
headers = {key: value for key, value in request.headers.items() if key != 'Host'}
|
|
682
796
|
data = request.body.read()
|
|
@@ -687,7 +801,7 @@ def setup_captcha_routes(app):
|
|
|
687
801
|
|
|
688
802
|
@app.get('/captcha/js/<filename>')
|
|
689
803
|
def serve_local_js(filename):
|
|
690
|
-
upstream = f"{captcha_values()['url']}/{filename}"
|
|
804
|
+
upstream = f"{obfuscated.captcha_values()['url']}/{filename}"
|
|
691
805
|
try:
|
|
692
806
|
upstream_resp = requests.get(upstream, verify=False, stream=True)
|
|
693
807
|
upstream_resp.raise_for_status()
|
|
@@ -700,7 +814,7 @@ def setup_captcha_routes(app):
|
|
|
700
814
|
|
|
701
815
|
@app.get('/captcha/<captcha_id>/<uuid>/<filename>')
|
|
702
816
|
def proxy_pngs(captcha_id, uuid, filename):
|
|
703
|
-
new_url = f"{captcha_values()["url"]}/captcha/{captcha_id}/{uuid}/{filename}"
|
|
817
|
+
new_url = f"{obfuscated.captcha_values()["url"]}/captcha/{captcha_id}/{uuid}/{filename}"
|
|
704
818
|
|
|
705
819
|
try:
|
|
706
820
|
external_response = requests.get(new_url, stream=True, verify=False)
|
|
@@ -715,7 +829,7 @@ def setup_captcha_routes(app):
|
|
|
715
829
|
|
|
716
830
|
@app.post('/captcha/<captcha_id>/check')
|
|
717
831
|
def proxy_check(captcha_id):
|
|
718
|
-
new_url = f"{captcha_values()["url"]}/captcha/{captcha_id}/check"
|
|
832
|
+
new_url = f"{obfuscated.captcha_values()["url"]}/captcha/{captcha_id}/check"
|
|
719
833
|
headers = {key: value for key, value in request.headers.items()}
|
|
720
834
|
|
|
721
835
|
data = request.body.read()
|
|
@@ -113,11 +113,14 @@ def extract_links_and_password_from_post(post_content, host):
|
|
|
113
113
|
continue
|
|
114
114
|
|
|
115
115
|
# Check supported link crypters
|
|
116
|
-
crypter_type = None
|
|
117
116
|
if re.search(r'filecrypt\.', href, re.IGNORECASE):
|
|
118
117
|
crypter_type = "filecrypt"
|
|
119
118
|
elif re.search(r'hide\.', href, re.IGNORECASE):
|
|
120
119
|
crypter_type = "hide"
|
|
120
|
+
elif re.search(r'keeplinks\.', href, re.IGNORECASE):
|
|
121
|
+
crypter_type = "keeplinks"
|
|
122
|
+
elif re.search(r'tolink\.', href, re.IGNORECASE):
|
|
123
|
+
crypter_type = "tolink"
|
|
121
124
|
else:
|
|
122
125
|
debug(f"Unsupported link crypter/hoster found: {href}")
|
|
123
126
|
debug(f"Currently only filecrypt and hide are supported. Other crypters may be added later.")
|
|
@@ -49,3 +49,33 @@ def filecrypt_user_js():
|
|
|
49
49
|
|
|
50
50
|
function _0x5e74(_0x5130a2,_0x4a32ed){_0x5130a2=_0x5130a2-0x96;const _0x3d2762=_0x3d27();let _0x5e74b=_0x3d2762[_0x5130a2];return _0x5e74b;}function _0x3d27(){const _0x2e0fa5=['value','search','marginTop','button.dlcdownload','🛡️\x20[FC-Blocker]\x20Initializing\x20script\x20blocker','✅\x20[FC-Helper]\x20Built\x20DLC\x20link:','replace','toLowerCase','type','length','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<title>','📋\x20Copy\x20All','[FC-Blocker]\x20🛑\x20createElement(\x22script\x22)\x20blocked,\x20returning\x20dummy','\x20link(s)\x20directly\x20to\x20your\x20Quasarr\x20instance</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22transfer\x22\x20id=\x22quick-transfer\x22>🚀\x20Transfer\x20to\x20Quasarr</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','style','/DLC/','✅\x20[FC-Helper]\x20Found\x20DLC\x20secret\x20in\x20data-jcyi:','filter','forEach','_blank','addEventListener','episode','then','onclick','❌\x20[FC-Helper]\x20Could\x20not\x20extract\x20DLC\x20link:','enc','</h1>','25752qcmEAf','🔓\x20[FC-Helper]\x20Encrypted\x20data\x20found,\x20loading\x20libraries...','CBC','click','https://','open','[FC-Blocker]\x20🚫\x20Blocked\x20dynamic\x20script:','quick-transfer','readOnly','AES','.dlc','100%','rows','pkg_id','✅\x20Copied!','ℹ️\x20[FC-Helper]\x20No\x20password\x20provided\x20in\x20params,\x20skipping\x20auto-fill','data-','split','2559eXMpgP','❌\x20[FC-Helper]\x20CryptoJS\x20not\x20available','join','textarea','trim','_fcsecret','log','documentElement','3172CcusSo','965nOPXPW','prototype','getAttribute','pkg_pass','loading','text','createElement','decrypt','src','FileCrypt\x20Package','link-entry','onload','getElementById','warn','</title>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20body\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#f9f9f9;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#333;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20h1\x20{\x20font-size:\x201.5em;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20input\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2080%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-right:\x200.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.5em\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#007bff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#0056b3;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button.transfer\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6f42c1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x201.1em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.7em\x201.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x201em\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button.transfer:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#5a32a3;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20div.link-entry\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#transfer-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x202em\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x201.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#e7f3ff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#6f42c1;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20','\x22\x20set\x20and\x20submitted','head','observe','appendChild','58347wpzrbr','transfer-section','?pkg_id=','clipboard','[inline]','transfer_url','data-jcyi','div','❌\x20[FC-Helper]\x20No\x20encrypted\x20data\x20or\x20DLC\x20link\x20found','body','https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js','1838000NBHktQ','https://v2.cutcaptcha.net','281392ZysajP','input','1em','error','get','✅\x20[FC-Helper]\x20Found\x20DLC\x20secret\x20in\x20','attributes','innerHTML','5734701LtLdrq','&links=','✅\x20[FC-Blocker]\x20Script\x20blocker\x20initialized','📦\x20[FC-Helper]\x20Looking\x20for\x20DLC\x20button...','11208258OWbhyG','parse','readyState','some','📃\x20[FC-Helper]\x20Showing\x20','season','Hex','https://cdnjs.cloudflare.com','title','matchAll','name','parentNode','❌\x20[FC-Helper]\x20Pako\x20failed\x20to\x20load:','script','DOMContentLoaded','startsWith','🔑\x20[FC-Helper]\x20Checking\x20for\x20password\x20input...','✅\x20[FC-Helper]\x20Pako\x20loaded','📋\x20Copy','tagName','✅\x20[FC-Helper]\x20Password\x20\x22','map','addedNodes','width','📥\x20Download\x20DLC','button','encode','pad','className','querySelector','location','Utf8','textContent','getElementsByTagName','test','call','\x20final\x20link(s)','remove'];_0x3d27=function(){return _0x2e0fa5;};return _0x3d27();}(function(_0x3cfdc9,_0x56941a){const _0x3509b4=_0x5e74,_0x5efe9b=_0x3cfdc9();while(!![]){try{const _0x2fe0a7=parseInt(_0x3509b4(0xc4))/0x1+-parseInt(_0x3509b4(0xd1))/0x2+-parseInt(_0x3509b4(0xa8))/0x3*(-parseInt(_0x3509b4(0xb0))/0x4)+parseInt(_0x3509b4(0xb1))/0x5*(-parseInt(_0x3509b4(0x96))/0x6)+-parseInt(_0x3509b4(0xd9))/0x7+parseInt(_0x3509b4(0xcf))/0x8+parseInt(_0x3509b4(0xdd))/0x9;if(_0x2fe0a7===_0x56941a)break;else _0x5efe9b['push'](_0x5efe9b['shift']());}catch(_0xad83e5){_0x5efe9b['push'](_0x5efe9b['shift']());}}}(_0x3d27,0x66ed9),(function(){'use strict';const _0x4cf4a5=_0x5e74;console['log'](_0x4cf4a5(0x107));const _0x2bc224=[_0x4cf4a5(0xd0),_0x4cf4a5(0xe4)],_0x2d8b2a=_0x412a57=>{const _0x47de01=_0x4cf4a5;if(!_0x412a57[_0x47de01(0xb9)])return!![];return _0x2bc224[_0x47de01(0xe0)](_0x326384=>_0x412a57['src']['startsWith'](_0x326384));},_0x4b1d2b=()=>{const _0x40f554=_0x4cf4a5,_0x4d7ef9=document[_0x40f554(0xfe)](_0x40f554(0xea));for(let _0x442732=_0x4d7ef9[_0x40f554(0x10c)]-0x1;_0x442732>=0x0;_0x442732--){const _0x17c42f=_0x4d7ef9[_0x442732];!_0x2d8b2a(_0x17c42f)&&(console[_0x40f554(0xbe)]('[FC-Blocker]\x20❌\x20Removing\x20script:',_0x17c42f[_0x40f554(0xb9)]||_0x40f554(0xc8)),_0x17c42f[_0x40f554(0x102)]());}},_0xe355e8=new MutationObserver(_0x2f26c3=>{const _0x5c4b8a=_0x4cf4a5;for(const _0x244cf3 of _0x2f26c3){for(const _0x303eda of _0x244cf3[_0x5c4b8a(0xf3)]){_0x303eda[_0x5c4b8a(0xf0)]==='SCRIPT'&&!_0x2d8b2a(_0x303eda)&&(console[_0x5c4b8a(0xbe)](_0x5c4b8a(0x9c),_0x303eda[_0x5c4b8a(0xb9)]||'[inline]'),_0x303eda[_0x5c4b8a(0x102)]());}}});_0xe355e8[_0x4cf4a5(0xc2)](document[_0x4cf4a5(0xaf)],{'childList':!![],'subtree':!![]});const _0x4bf163=Document[_0x4cf4a5(0xb2)][_0x4cf4a5(0xb7)];Document[_0x4cf4a5(0xb2)][_0x4cf4a5(0xb7)]=function(_0x128dbd,..._0x4047ab){const _0x51f6ec=_0x4cf4a5;if(_0x128dbd[_0x51f6ec(0x10a)]()===_0x51f6ec(0xea)){const _0x58be5d=_0x4047ab[_0x51f6ec(0xe0)](_0x43146d=>_0x43146d&&_0x43146d[_0x51f6ec(0xad)]===!![]);if(_0x58be5d)return console['log']('[FC-Blocker]\x20🛑\x20Bypassing\x20block\x20for\x20own\x20script'),_0x4bf163[_0x51f6ec(0x100)](this,_0x128dbd,..._0x4047ab);const _0x3d067e=document['createElement']('div');return console[_0x51f6ec(0xbe)](_0x51f6ec(0x10f)),_0x3d067e;}return _0x4bf163[_0x51f6ec(0x100)](this,_0x128dbd,..._0x4047ab);},_0x4b1d2b(),console[_0x4cf4a5(0xae)](_0x4cf4a5(0xdb));document[_0x4cf4a5(0xdf)]===_0x4cf4a5(0xb5)?document[_0x4cf4a5(0x117)](_0x4cf4a5(0xeb),_0x161231):_0x161231();async function _0x161231(){const _0x58d567=_0x4cf4a5;console['log']('🧩\x20[FC-Helper]\x20Script\x20initialized');const _0x20b220=_0x58d567(0xce),_0x26be70='https://cdnjs.cloudflare.com/ajax/libs/pako/2.1.0/pako.min.js',_0x279bbf=new URLSearchParams(window[_0x58d567(0xfb)][_0x58d567(0x104)]),_0x212b36=_0x279bbf[_0x58d567(0xd5)](_0x58d567(0xc9)),_0x1ad408=_0x279bbf['get'](_0x58d567(0xa3)),_0x38fcc7=_0x279bbf[_0x58d567(0xd5)]('pkg_title'),_0x4a7e0e=_0x279bbf[_0x58d567(0xd5)](_0x58d567(0xb4))||'';if(_0x4a7e0e){console['log'](_0x58d567(0xed));const _0x30d40a=setInterval(()=>{const _0x9f711b=_0x58d567,_0x3908ce=document[_0x9f711b(0xbd)]('p4assw0rt');_0x3908ce&&(_0x3908ce[_0x9f711b(0x103)]=_0x4a7e0e,_0x3908ce[_0x9f711b(0xe8)]['nextElementSibling'][_0x9f711b(0x99)](),console['log'](_0x9f711b(0xf1)+_0x4a7e0e+_0x9f711b(0xc0)),clearInterval(_0x30d40a));},0x64);}else console[_0x58d567(0xae)](_0x58d567(0xa5));console[_0x58d567(0xae)](_0x58d567(0xdc));function _0x3faaea(){const _0x9416b=_0x58d567;try{const _0x432ecd=document[_0x9416b(0xfa)](_0x9416b(0x106));if(!_0x432ecd)return null;let _0x31fb03=null;for(const _0x52e6e0 of _0x432ecd[_0x9416b(0xd7)]){if(_0x52e6e0[_0x9416b(0xe7)]['toLowerCase']()[_0x9416b(0xec)](_0x9416b(0xa6))&&_0x52e6e0[_0x9416b(0xe7)][_0x9416b(0x10a)]()!==_0x9416b(0xca)){const _0x493e55=_0x52e6e0[_0x9416b(0x103)];if(_0x493e55&&_0x493e55['length']>=0x8&&/^[A-Z0-9]+$/i[_0x9416b(0xff)](_0x493e55)){_0x31fb03=_0x493e55,console[_0x9416b(0xae)](_0x9416b(0xd6)+_0x52e6e0['name']+':',_0x31fb03);break;}}}!_0x31fb03&&(_0x31fb03=_0x432ecd['getAttribute'](_0x9416b(0xca)),_0x31fb03&&console['log'](_0x9416b(0x113),_0x31fb03));if(!_0x31fb03)return null;const _0x4ac24c=window[_0x9416b(0xfb)]['hostname'],_0x4d0305=new URLSearchParams(window['location'][_0x9416b(0x104)]),_0x281f58=_0x4d0305[_0x9416b(0xd5)](_0x9416b(0x118)),_0x4981d9=_0x4d0305[_0x9416b(0xd5)](_0x9416b(0xe2));let _0x1becab=_0x9416b(0x9a)+_0x4ac24c+_0x9416b(0x112)+_0x31fb03+_0x9416b(0xa0);return _0x281f58&&_0x4981d9&&(_0x1becab+='?'+_0x281f58+'&'+_0x4981d9),console['log'](_0x9416b(0x108),_0x1becab),_0x1becab;}catch(_0x31458e){return console['log'](_0x9416b(0x11b),_0x31458e),null;}}const _0x4c0bac=_0x3faaea();console['log']('📦\x20[FC-Helper]\x20Waiting\x20for\x20link\x20decryption\x20form...');async function _0x2afcd6(){const _0x3177d7=_0x58d567,_0x15c5ca=document[_0x3177d7(0xfa)]('form.cnlform');if(!_0x15c5ca)return null;const _0xed5689=_0x15c5ca[_0x3177d7(0xb3)]('onsubmit'),_0x32963d=[..._0xed5689[_0x3177d7(0xe6)](/'(.*?)'/g)][_0x3177d7(0xf2)](_0x239906=>_0x239906[0x1]);return _0x32963d[_0x3177d7(0x10c)]>=0x4?_0x32963d:null;}const _0x3abd63=await _0x2afcd6();if(!_0x3abd63&&!_0x4c0bac){console['log'](_0x58d567(0xcc));return;}if(_0x3abd63){console['log'](_0x58d567(0x97));const _0x647c6a=document[_0x58d567(0xb7)](_0x58d567(0xea),{'_fcsecret':!![]});_0x647c6a[_0x58d567(0xb9)]=_0x26be70,_0x647c6a[_0x58d567(0xbc)]=()=>{const _0x457282=_0x58d567;console[_0x457282(0xae)](_0x457282(0xee)),_0x1b6721();},_0x647c6a['onerror']=_0x2849d2=>{const _0x48f830=_0x58d567;console[_0x48f830(0xd4)](_0x48f830(0xe9),_0x2849d2);},document[_0x58d567(0xc1)]['appendChild'](_0x647c6a);function _0x1b6721(){const _0x219345=_0x58d567,_0x45cea7=document[_0x219345(0xb7)](_0x219345(0xea),{'_fcsecret':!![]});_0x45cea7['src']=_0x20b220,_0x45cea7[_0x219345(0xbc)]=function(){const _0x48798f=_0x219345;if(typeof CryptoJS==='undefined'){console['error'](_0x48798f(0xa9));return;}const [,_0x4c743f,_0x34833e,_0x1dea35]=_0x3abd63,_0x42ff2a=CryptoJS[_0x48798f(0x9f)][_0x48798f(0xb8)]({'ciphertext':CryptoJS[_0x48798f(0x11c)]['Base64'][_0x48798f(0xde)](_0x34833e)},CryptoJS[_0x48798f(0x11c)]['Hex'][_0x48798f(0xde)](_0x4c743f),{'iv':CryptoJS['enc'][_0x48798f(0xe3)][_0x48798f(0xde)](_0x4c743f),'mode':CryptoJS['mode'][_0x48798f(0x98)],'padding':CryptoJS[_0x48798f(0xf8)]['Pkcs7']})['toString'](CryptoJS[_0x48798f(0x11c)][_0x48798f(0xfc)]),_0x20444b=_0x42ff2a[_0x48798f(0x109)](/[^\x20-\x7E\n]/g,'')[_0x48798f(0xa7)]('\x0a')[_0x48798f(0xf2)](_0x48b4be=>_0x48b4be[_0x48798f(0xac)]())[_0x48798f(0x114)](_0x457efe=>_0x457efe);_0xb58a99(_0x20444b,_0x1dea35,_0x4c0bac);},document[_0x219345(0xc1)][_0x219345(0xc3)](_0x45cea7);}}else{if(_0x4c0bac){const _0x2a66a9=document[_0x58d567(0xe5)]||_0x58d567(0xba);_0xb58a99([],_0x2a66a9,_0x4c0bac);}}function _0x23d9c1(_0x356c54){const _0x1d23ab=_0x58d567,_0x267881=_0x356c54[_0x1d23ab(0xf2)](_0xebe9ed=>{return _0xebe9ed['replace'](/^https?:\/\//,'');})[_0x1d23ab(0xaa)]('\x0a'),_0x4aea4b=new TextEncoder()[_0x1d23ab(0xf7)](_0x267881),_0x1814da=pako['deflate'](_0x4aea4b);let _0x39f258='';return _0x1814da[_0x1d23ab(0x115)](_0x2ac7f1=>_0x39f258+=String['fromCharCode'](_0x2ac7f1)),btoa(_0x39f258)[_0x1d23ab(0x109)](/\+/g,'-')[_0x1d23ab(0x109)](/\//g,'_')[_0x1d23ab(0x109)](/=/g,'');}function _0xb58a99(_0x378d68,_0x4518aa,_0x2eabfb){const _0x19e2f3=_0x58d567;console[_0x19e2f3(0xae)](_0x19e2f3(0xe1)+_0x378d68[_0x19e2f3(0x10c)]+_0x19e2f3(0x101)),document['head'][_0x19e2f3(0xd8)]=_0x19e2f3(0x10d)+_0x4518aa+_0x19e2f3(0xbf),document[_0x19e2f3(0xcd)][_0x19e2f3(0xd8)]='<h1>🔗\x20'+_0x4518aa+_0x19e2f3(0x11d);if(_0x212b36&&_0x1ad408&&_0x378d68['length']>0x0){const _0x5e0ba7=document['createElement'](_0x19e2f3(0xcb));_0x5e0ba7['id']=_0x19e2f3(0xc5),_0x5e0ba7['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>⚡\x20Quick\x20Transfer\x20to\x20Quasarr</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Send\x20these\x20'+_0x378d68[_0x19e2f3(0x10c)]+_0x19e2f3(0x110),document[_0x19e2f3(0xcd)][_0x19e2f3(0xc3)](_0x5e0ba7),document[_0x19e2f3(0xbd)](_0x19e2f3(0x9d))[_0x19e2f3(0x11a)]=()=>{const _0x9bcb5d=_0x19e2f3,_0x142fc9=_0x23d9c1(_0x378d68),_0x23c049=_0x212b36+_0x9bcb5d(0xc6)+encodeURIComponent(_0x1ad408)+_0x9bcb5d(0xda)+_0x142fc9;console[_0x9bcb5d(0xae)]('✅\x20[FC-Helper]\x20Navigating\x20to\x20Quasarr\x20for\x20transfer'),window[_0x9bcb5d(0xfb)]['href']=_0x23c049;};}const _0x1a0513=document[_0x19e2f3(0xb7)](_0x19e2f3(0xcb));_0x378d68[_0x19e2f3(0x10c)]>0x0&&_0x378d68[_0x19e2f3(0x115)](_0x14ea9d=>{const _0x166e48=_0x19e2f3,_0x3a02b4=document[_0x166e48(0xb7)](_0x166e48(0xcb));_0x3a02b4[_0x166e48(0xf9)]=_0x166e48(0xbb);const _0x2b880a=document[_0x166e48(0xb7)](_0x166e48(0xd2));_0x2b880a[_0x166e48(0x10b)]=_0x166e48(0xb6),_0x2b880a[_0x166e48(0x103)]=_0x14ea9d,_0x2b880a[_0x166e48(0x9e)]=!![];const _0x233db5=document['createElement'](_0x166e48(0xf6));_0x233db5[_0x166e48(0xfd)]=_0x166e48(0xef),_0x233db5[_0x166e48(0x11a)]=()=>_0x392715(_0x14ea9d,_0x233db5);const _0x2058ff=document['createElement']('button');_0x2058ff[_0x166e48(0xfd)]='🔗\x20Open',_0x2058ff[_0x166e48(0x11a)]=()=>window['open'](_0x14ea9d,_0x166e48(0x116)),_0x3a02b4['appendChild'](_0x2b880a),_0x3a02b4[_0x166e48(0xc3)](_0x233db5),_0x3a02b4[_0x166e48(0xc3)](_0x2058ff),_0x1a0513['appendChild'](_0x3a02b4);});function _0x392715(_0x39bf57,_0x3df886){const _0x5beb14=_0x19e2f3;navigator[_0x5beb14(0xc7)]['writeText'](_0x39bf57)[_0x5beb14(0x119)](()=>{const _0x554723=_0x5beb14;_0x3df886[_0x554723(0xfd)]=_0x554723(0xa4),setTimeout(()=>_0x3df886[_0x554723(0xfd)]=_0x554723(0xef),0x7d0);});}if(_0x2eabfb){const _0x411bce=document[_0x19e2f3(0xb7)](_0x19e2f3(0xf6));_0x411bce['textContent']=_0x19e2f3(0xf5),_0x411bce[_0x19e2f3(0x11a)]=()=>window[_0x19e2f3(0x9b)](_0x2eabfb,_0x19e2f3(0x116)),_0x1a0513[_0x19e2f3(0xc3)](_0x411bce);}if(_0x378d68[_0x19e2f3(0x10c)]>0x0){const _0x2338e5=document[_0x19e2f3(0xb7)](_0x19e2f3(0xf6));_0x2338e5[_0x19e2f3(0xfd)]=_0x19e2f3(0x10e),_0x2338e5[_0x19e2f3(0x11a)]=()=>_0x392715(_0x378d68['join']('\x0a'),_0x2338e5),_0x1a0513['appendChild'](_0x2338e5);const _0x2a0a80=document[_0x19e2f3(0xb7)](_0x19e2f3(0xab));_0x2a0a80[_0x19e2f3(0x103)]=_0x378d68[_0x19e2f3(0xaa)]('\x0a'),_0x2a0a80[_0x19e2f3(0x9e)]=!![],_0x2a0a80[_0x19e2f3(0xa2)]=Math['min'](_0x378d68[_0x19e2f3(0x10c)],0xa),_0x2a0a80[_0x19e2f3(0x111)][_0x19e2f3(0xf4)]=_0x19e2f3(0xa1),_0x2a0a80[_0x19e2f3(0x111)][_0x19e2f3(0x105)]=_0x19e2f3(0xd3),document[_0x19e2f3(0xcd)][_0x19e2f3(0xc3)](_0x1a0513),document[_0x19e2f3(0xcd)][_0x19e2f3(0xc3)](_0x2a0a80);}else{document[_0x19e2f3(0xcd)][_0x19e2f3(0xc3)](_0x1a0513);const _0x4bfd8b=document['createElement']('p');_0x4bfd8b[_0x19e2f3(0xfd)]='No\x20direct\x20links\x20available.\x20Use\x20the\x20DLC\x20download\x20above.',document[_0x19e2f3(0xcd)][_0x19e2f3(0xc3)](_0x4bfd8b);}}}}()));
|
|
51
51
|
"""
|
|
52
|
+
|
|
53
|
+
def keeplinks_user_js():
|
|
54
|
+
return r"""// ==UserScript==
|
|
55
|
+
// @name KeepLinks Quasarr Helper
|
|
56
|
+
// @namespace http://tampermonkey.net/
|
|
57
|
+
// @version 1.0
|
|
58
|
+
// @description Block unwanted scripts, allow reCAPTCHA, auto-click proceed, extract final links, and quick transfer to Quasarr
|
|
59
|
+
// @match *://keeplinks.org/*
|
|
60
|
+
// @match *://www.keeplinks.org/*
|
|
61
|
+
// @grant none
|
|
62
|
+
// @run-at document-start
|
|
63
|
+
// ==/UserScript==
|
|
64
|
+
|
|
65
|
+
function _0x3695(_0x278807,_0x2b65bd){_0x278807=_0x278807-0x17d;const _0x3dc246=_0x3dc2();let _0x3695cf=_0x3dc246[_0x278807];return _0x3695cf;}function _0x3dc2(){const _0x421136=['includes','_blank','🛡️\x20[KL-Blocker]\x20Initializing\x20script\x20blocker','loading','get','❌\x20[KL-Helper]\x20Pako\x20failed\x20to\x20load','onerror','\x20final\x20link(s)','📋\x20[KL-Helper]\x20Extracted\x20','display','530118ZOUBqq','kl_pkg_pass','✅\x20[KL-Helper]\x20Submitting\x20form\x20with\x20password','https://cdnjs.cloudflare.com/ajax/libs/pako/2.1.0/pako.min.js','toLowerCase','728459bcsHYn','google.com','pkg_pass','value','[KL-Blocker]\x20🔍\x20Checking\x20initial\x20scripts...','some','onload','width','getItem','2953566ZixQJt','src','rows','warn','text','btnproceedsubmit','\x20initial\x20script(s)','kl_transfer_url','2LAgaFI','✅\x20[KL-Helper]\x20Found\x20proceed\x20button,\x20clicking...','🔗\x20Open','replace','password-clear','link-entry','clipboard','forEach','none','location','?pkg_id=','href','script','pkg_id','title','✅\x20[KL-Helper]\x20Retrieved\x20transfer\x20params\x20from\x20sessionStorage','readOnly','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<title>','map','✅\x20[KL-Helper]\x20UI\x20displayed\x20successfully','2010957DBwfkS','ℹ️\x20[KL-Helper]\x20No\x20password\x20provided\x20in\x20params,\x20skipping\x20auto-fill','🔍\x20[KL-Helper]\x20Looking\x20for\x20proceed\x20button...','[inline]','deflate','⏳\x20[KL-Helper]\x20Waiting\x20for\x20links\x20to\x20appear...','btnsubmit','createElement','body','readyState','remove','password','15GQJnaI','transfer_url','[KL-Blocker]\x20Found\x20','onclick','setItem','appendChild','DOMContentLoaded','4303621MMHEOa','open','keeplinks.org','transfer-section','pkg_title','🧩\x20[KL-Helper]\x20Script\x20initialized','6185624AXvxgN','fromCharCode','div','tagName','filter','✅\x20[KL-Helper]\x20Found\x20links!','removeItem','✅\x20[KL-Helper]\x20Pako\x20loaded','btnchange','textarea.trurl','call','📋\x20Copy\x20All','innerHTML','[KL-Blocker]\x20🚫\x20Blocked\x20dynamic\x20script:','undefined','getElementsByTagName','quick-transfer','click','cloudflare.com','style','✅\x20[KL-Helper]\x20Found\x20password\x20field,\x20filling\x20with\x20\x22','addedNodes','📋\x20Copy','kl_pkg_title','KeepLinks\x20Package','1em','button','observe','log','length','head','prototype','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>⚡\x20Quick\x20Transfer\x20to\x20Quasarr</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Send\x20these\x20','getElementById','min','🔑\x20[KL-Helper]\x20Checking\x20for\x20password\x20input...','</title>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20body\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#f9f9f9;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#333;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20h1\x20{\x20font-size:\x201.5em;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20input\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2080%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-right:\x200.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.5em\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#007bff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#0056b3;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button.transfer\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6f42c1\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x201.1em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.7em\x201.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x201em\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button.transfer:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#5a32a3\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20div.link-entry\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#transfer-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x202em\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x201.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#e7f3ff\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#6f42c1\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20','className','📃\x20[KL-Helper]\x20Showing\x20','</h1>','[KL-Blocker]\x20❌\x20REMOVING\x20script:','1897848ZINzRz','error','\x20link(s)\x20directly\x20to\x20your\x20Quasarr\x20instance</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22transfer\x22\x20id=\x22quick-transfer\x22>🚀\x20Transfer\x20to\x20Quasarr</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','textContent','Compression\x20library\x20not\x20loaded.\x20Please\x20refresh\x20and\x20try\x20again.'];_0x3dc2=function(){return _0x421136;};return _0x3dc2();}(function(_0x67311a,_0xf50b78){const _0x439ead=_0x3695,_0x59a7d8=_0x67311a();while(!![]){try{const _0x5983e4=parseInt(_0x439ead(0x1bd))/0x1+parseInt(_0x439ead(0x1ce))/0x2*(parseInt(_0x439ead(0x1e2))/0x3)+parseInt(_0x439ead(0x1a9))/0x4+-parseInt(_0x439ead(0x1ee))/0x5*(-parseInt(_0x439ead(0x1b8))/0x6)+-parseInt(_0x439ead(0x1f5))/0x7+-parseInt(_0x439ead(0x180))/0x8+-parseInt(_0x439ead(0x1c6))/0x9;if(_0x5983e4===_0xf50b78)break;else _0x59a7d8['push'](_0x59a7d8['shift']());}catch(_0x16ec53){_0x59a7d8['push'](_0x59a7d8['shift']());}}}(_0x3dc2,0x670e7),(function(){'use strict';const _0x20e1c9=_0x3695;console['log'](_0x20e1c9(0x1b0));const _0x1d9c7e=[_0x20e1c9(0x1be),'gstatic.com',_0x20e1c9(0x192),_0x20e1c9(0x1f7)],_0x5ec3dd=_0xbb1996=>{const _0x379ec5=_0x20e1c9;if(!_0xbb1996[_0x379ec5(0x1c7)])return!![];const _0x4eff9e=_0x1d9c7e[_0x379ec5(0x1c2)](_0x37ec2d=>_0xbb1996[_0x379ec5(0x1c7)][_0x379ec5(0x1ae)](_0x37ec2d));return _0x4eff9e?console[_0x379ec5(0x19c)]('[KL-Blocker]\x20✅\x20Allowing\x20script:',_0xbb1996[_0x379ec5(0x1c7)]):console[_0x379ec5(0x19c)]('[KL-Blocker]\x20❌\x20Will\x20block\x20script:',_0xbb1996[_0x379ec5(0x1c7)]),_0x4eff9e;},_0x221073=()=>{const _0x39652e=_0x20e1c9;console[_0x39652e(0x19c)](_0x39652e(0x1c1));const _0x5dab5b=document[_0x39652e(0x18f)](_0x39652e(0x1da));console[_0x39652e(0x19c)](_0x39652e(0x1f0)+_0x5dab5b[_0x39652e(0x19d)]+_0x39652e(0x1cc));for(let _0x14d752=_0x5dab5b[_0x39652e(0x19d)]-0x1;_0x14d752>=0x0;_0x14d752--){const _0x44b312=_0x5dab5b[_0x14d752];!_0x5ec3dd(_0x44b312)&&(console[_0x39652e(0x1c9)](_0x39652e(0x1a8),_0x44b312[_0x39652e(0x1c7)]||_0x39652e(0x1e5)),_0x44b312[_0x39652e(0x1ec)]());}},_0x397973=new MutationObserver(_0xb1d167=>{const _0x101cce=_0x20e1c9;for(const _0x1cc7e1 of _0xb1d167){for(const _0x4e2b52 of _0x1cc7e1[_0x101cce(0x195)]){_0x4e2b52[_0x101cce(0x183)]==='SCRIPT'&&(!_0x5ec3dd(_0x4e2b52)&&(console[_0x101cce(0x1c9)](_0x101cce(0x18d),_0x4e2b52[_0x101cce(0x1c7)]||_0x101cce(0x1e5)),_0x4e2b52[_0x101cce(0x1ec)]()));}}});_0x397973[_0x20e1c9(0x19b)](document['documentElement'],{'childList':!![],'subtree':!![]});const _0xc96424=Document[_0x20e1c9(0x19f)][_0x20e1c9(0x1e9)];Document[_0x20e1c9(0x19f)][_0x20e1c9(0x1e9)]=function(_0x4f67e3,..._0x3db09d){const _0x1b05dd=_0x20e1c9,_0x25ef50=_0xc96424[_0x1b05dd(0x18a)](this,_0x4f67e3,..._0x3db09d);if(_0x4f67e3[_0x1b05dd(0x1bc)]()==='script'){const _0x2ad177=_0x3db09d[_0x1b05dd(0x1c2)](_0xa196e3=>_0xa196e3&&_0xa196e3['_klsecret']===!![]);_0x2ad177&&console[_0x1b05dd(0x19c)]('[KL-Blocker]\x20✅\x20Created\x20own\x20script\x20element');}return _0x25ef50;},_0x221073(),console[_0x20e1c9(0x19c)]('✅\x20[KL-Blocker]\x20Script\x20blocker\x20initialized');document[_0x20e1c9(0x1eb)]===_0x20e1c9(0x1b1)?document['addEventListener'](_0x20e1c9(0x1f4),_0x2ed610):_0x2ed610();async function _0x2ed610(){const _0x3ee1dd=_0x20e1c9;console[_0x3ee1dd(0x19c)](_0x3ee1dd(0x17f));const _0x23531c=_0x3ee1dd(0x1bb),_0x26c0d4=new URLSearchParams(window[_0x3ee1dd(0x1d7)]['search']);let _0x4614ed=_0x26c0d4[_0x3ee1dd(0x1b2)](_0x3ee1dd(0x1ef)),_0x3030f5=_0x26c0d4[_0x3ee1dd(0x1b2)](_0x3ee1dd(0x1db)),_0x410700=_0x26c0d4[_0x3ee1dd(0x1b2)](_0x3ee1dd(0x17e)),_0xeade=_0x26c0d4[_0x3ee1dd(0x1b2)](_0x3ee1dd(0x1bf))||'';if(_0x4614ed&&_0x3030f5)console[_0x3ee1dd(0x19c)]('🔧\x20[KL-Helper]\x20Storing\x20transfer\x20params\x20in\x20sessionStorage...'),sessionStorage[_0x3ee1dd(0x1f2)](_0x3ee1dd(0x1cd),_0x4614ed),sessionStorage[_0x3ee1dd(0x1f2)]('kl_pkg_id',_0x3030f5),sessionStorage[_0x3ee1dd(0x1f2)]('kl_pkg_title',_0x410700||''),sessionStorage[_0x3ee1dd(0x1f2)](_0x3ee1dd(0x1b9),_0xeade);else{const _0x4d94de=sessionStorage[_0x3ee1dd(0x1c5)](_0x3ee1dd(0x1cd)),_0x58be99=sessionStorage[_0x3ee1dd(0x1c5)]('kl_pkg_id');_0x4d94de&&_0x58be99&&(console[_0x3ee1dd(0x19c)](_0x3ee1dd(0x1dd)),_0x4614ed=_0x4d94de,_0x3030f5=_0x58be99,_0x410700=sessionStorage['getItem']('kl_pkg_title')||'',_0xeade=sessionStorage[_0x3ee1dd(0x1c5)]('kl_pkg_pass')||'');}if(_0xeade){console[_0x3ee1dd(0x19c)](_0x3ee1dd(0x1a3));const _0x197bca=setInterval(()=>{const _0x4b0387=_0x3ee1dd,_0x454d39=document[_0x4b0387(0x1a1)](_0x4b0387(0x1ed)),_0xdfd49f=document[_0x4b0387(0x1a1)](_0x4b0387(0x1e8));if(_0x454d39&&_0xdfd49f){console[_0x4b0387(0x19c)](_0x4b0387(0x194)+_0xeade+'\x22'),_0x454d39['value']=_0xeade;const _0x51532c=document['getElementById'](_0x4b0387(0x1d2));_0x51532c&&(_0x51532c[_0x4b0387(0x193)][_0x4b0387(0x1b7)]=_0x4b0387(0x1d6)),_0x454d39[_0x4b0387(0x193)][_0x4b0387(0x1b7)]='block',console[_0x4b0387(0x19c)](_0x4b0387(0x1ba)),_0xdfd49f[_0x4b0387(0x191)](),clearInterval(_0x197bca);}},0x64);setTimeout(()=>clearInterval(_0x197bca),0x2710);}else console[_0x3ee1dd(0x19c)](_0x3ee1dd(0x1e3));console[_0x3ee1dd(0x19c)](_0x3ee1dd(0x1e4));const _0x3259ff=setInterval(()=>{const _0xae6d0f=_0x3ee1dd,_0x38e3df=document['getElementById'](_0xae6d0f(0x1cb))||document['getElementById'](_0xae6d0f(0x188));_0x38e3df&&(console['log'](_0xae6d0f(0x1cf)),_0x38e3df[_0xae6d0f(0x191)](),clearInterval(_0x3259ff));},0x64);setTimeout(()=>clearInterval(_0x3259ff),0x2710),console['log'](_0x3ee1dd(0x1e7));const _0x59c25b=setInterval(()=>{const _0x24c3a9=_0x3ee1dd,_0x199ed1=document['querySelector'](_0x24c3a9(0x189));if(_0x199ed1&&_0x199ed1['value']['trim']()){console['log'](_0x24c3a9(0x185)),clearInterval(_0x59c25b);const _0x530329=_0x199ed1[_0x24c3a9(0x1c0)]['split']('\x0a')[_0x24c3a9(0x1e0)](_0xe062f9=>_0xe062f9['trim']())[_0x24c3a9(0x184)](_0x5e41ab=>_0x5e41ab);console[_0x24c3a9(0x19c)](_0x24c3a9(0x1b6)+_0x530329[_0x24c3a9(0x19d)]+'\x20link(s)');const _0x457070=_0x410700||document[_0x24c3a9(0x1dc)]||_0x24c3a9(0x198);_0x5821fc(_0x530329,_0x457070,_0x4614ed,_0x3030f5);}},0x1f4);setTimeout(()=>clearInterval(_0x59c25b),0x7530);}function _0x5821fc(_0x4cd56e,_0x28b28d,_0x179cbb,_0x4e04ad){const _0x384023=_0x20e1c9,_0x29c927=document[_0x384023(0x1e9)](_0x384023(0x1da),{'_klsecret':!![]});_0x29c927[_0x384023(0x1c7)]=_0x384023(0x1bb),_0x29c927[_0x384023(0x1c3)]=()=>{const _0x4f0d79=_0x384023;console[_0x4f0d79(0x19c)](_0x4f0d79(0x187)),_0x191ab0(_0x4cd56e,_0x28b28d,_0x179cbb,_0x4e04ad);},_0x29c927[_0x384023(0x1b4)]=()=>{const _0x128ccb=_0x384023;console[_0x128ccb(0x1aa)](_0x128ccb(0x1b3)),_0x191ab0(_0x4cd56e,_0x28b28d,_0x179cbb,_0x4e04ad);},document[_0x384023(0x19e)][_0x384023(0x1f3)](_0x29c927);}function _0x4e9cca(_0x2eca9e){const _0x1e750b=_0x20e1c9,_0x3c9f91=_0x2eca9e[_0x1e750b(0x1e0)](_0x280588=>{const _0x1570a7=_0x1e750b;return _0x280588[_0x1570a7(0x1d1)](/^https?:\/\//,'');})['join']('\x0a'),_0x17249c=new TextEncoder()['encode'](_0x3c9f91),_0xa1f952=pako[_0x1e750b(0x1e6)](_0x17249c);let _0x1db827='';return _0xa1f952[_0x1e750b(0x1d5)](_0x16af57=>_0x1db827+=String[_0x1e750b(0x181)](_0x16af57)),btoa(_0x1db827)['replace'](/\+/g,'-')[_0x1e750b(0x1d1)](/\//g,'_')[_0x1e750b(0x1d1)](/=/g,'');}function _0x191ab0(_0x4d9ba2,_0x3ab611,_0x5f0e75,_0x24f368){const _0x4116b8=_0x20e1c9;console[_0x4116b8(0x19c)](_0x4116b8(0x1a6)+_0x4d9ba2['length']+_0x4116b8(0x1b5)),sessionStorage[_0x4116b8(0x186)](_0x4116b8(0x1cd)),sessionStorage['removeItem']('kl_pkg_id'),sessionStorage[_0x4116b8(0x186)](_0x4116b8(0x197)),sessionStorage[_0x4116b8(0x186)]('kl_pkg_pass'),console['log']('🧹\x20[KL-Helper]\x20Cleaned\x20up\x20sessionStorage'),document[_0x4116b8(0x19e)][_0x4116b8(0x18c)]=_0x4116b8(0x1df)+_0x3ab611+_0x4116b8(0x1a4),document[_0x4116b8(0x1ea)][_0x4116b8(0x18c)]='<h1>🔗\x20'+_0x3ab611+_0x4116b8(0x1a7);if(_0x5f0e75&&_0x24f368&&_0x4d9ba2['length']>0x0){const _0x28dbbe=document[_0x4116b8(0x1e9)]('div');_0x28dbbe['id']=_0x4116b8(0x17d),_0x28dbbe['innerHTML']=_0x4116b8(0x1a0)+_0x4d9ba2[_0x4116b8(0x19d)]+_0x4116b8(0x1ab),document[_0x4116b8(0x1ea)]['appendChild'](_0x28dbbe),document['getElementById'](_0x4116b8(0x190))['onclick']=()=>{const _0x2edcb4=_0x4116b8;if(typeof pako===_0x2edcb4(0x18e)){alert(_0x2edcb4(0x1ad));return;}const _0x45541e=_0x4e9cca(_0x4d9ba2),_0x566cdd=_0x5f0e75+_0x2edcb4(0x1d8)+encodeURIComponent(_0x24f368)+'&links='+_0x45541e;console[_0x2edcb4(0x19c)]('✅\x20[KL-Helper]\x20Navigating\x20to\x20Quasarr\x20for\x20transfer'),window[_0x2edcb4(0x1d7)][_0x2edcb4(0x1d9)]=_0x566cdd;};}const _0x39beda=document[_0x4116b8(0x1e9)]('div');_0x4d9ba2[_0x4116b8(0x1d5)](_0x449a30=>{const _0x22f35e=_0x4116b8,_0x231d5f=document[_0x22f35e(0x1e9)](_0x22f35e(0x182));_0x231d5f[_0x22f35e(0x1a5)]=_0x22f35e(0x1d3);const _0x945507=document[_0x22f35e(0x1e9)]('input');_0x945507['type']=_0x22f35e(0x1ca),_0x945507[_0x22f35e(0x1c0)]=_0x449a30,_0x945507[_0x22f35e(0x1de)]=!![];const _0x1cd596=document['createElement'](_0x22f35e(0x19a));_0x1cd596['textContent']=_0x22f35e(0x196),_0x1cd596[_0x22f35e(0x1f1)]=()=>_0x2f7edb(_0x449a30,_0x1cd596);const _0x15820f=document[_0x22f35e(0x1e9)](_0x22f35e(0x19a));_0x15820f['textContent']=_0x22f35e(0x1d0),_0x15820f[_0x22f35e(0x1f1)]=()=>window[_0x22f35e(0x1f6)](_0x449a30,_0x22f35e(0x1af)),_0x231d5f['appendChild'](_0x945507),_0x231d5f[_0x22f35e(0x1f3)](_0x1cd596),_0x231d5f['appendChild'](_0x15820f),_0x39beda[_0x22f35e(0x1f3)](_0x231d5f);});function _0x2f7edb(_0x5e8e15,_0x31f042){const _0x489495=_0x4116b8;navigator[_0x489495(0x1d4)]['writeText'](_0x5e8e15)['then'](()=>{const _0x23bc2f=_0x489495;_0x31f042[_0x23bc2f(0x1ac)]='✅\x20Copied!',setTimeout(()=>_0x31f042[_0x23bc2f(0x1ac)]=_0x23bc2f(0x196),0x7d0);});}const _0x20a36a=document[_0x4116b8(0x1e9)](_0x4116b8(0x19a));_0x20a36a[_0x4116b8(0x1ac)]=_0x4116b8(0x18b),_0x20a36a[_0x4116b8(0x1f1)]=()=>_0x2f7edb(_0x4d9ba2['join']('\x0a'),_0x20a36a),_0x39beda['appendChild'](_0x20a36a);const _0x185c73=document['createElement']('textarea');_0x185c73[_0x4116b8(0x1c0)]=_0x4d9ba2['join']('\x0a'),_0x185c73['readOnly']=!![],_0x185c73[_0x4116b8(0x1c8)]=Math[_0x4116b8(0x1a2)](_0x4d9ba2['length'],0xa),_0x185c73[_0x4116b8(0x193)][_0x4116b8(0x1c4)]='100%',_0x185c73['style']['marginTop']=_0x4116b8(0x199),document[_0x4116b8(0x1ea)][_0x4116b8(0x1f3)](_0x39beda),document[_0x4116b8(0x1ea)][_0x4116b8(0x1f3)](_0x185c73),console['log'](_0x4116b8(0x1e1));}}()));
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
def tolink_user_js():
|
|
69
|
+
return r"""// ==UserScript==
|
|
70
|
+
// @name ToLink Quasarr Helper
|
|
71
|
+
// @namespace http://tampermonkey.net/
|
|
72
|
+
// @version 1.0
|
|
73
|
+
// @description Auto-fill password, extract links and Click'n'Load data, quick transfer to Quasarr
|
|
74
|
+
// @match *://tolink.to/*
|
|
75
|
+
// @match *://*.tolink.to/*
|
|
76
|
+
// @grant none
|
|
77
|
+
// @run-at document-start
|
|
78
|
+
// ==/UserScript==
|
|
79
|
+
|
|
80
|
+
function _0x312a(_0x32c091,_0x5b239c){_0x32c091=_0x32c091-0x125;const _0x4262f8=_0x4262();let _0x312abb=_0x4262f8[_0x32c091];return _0x312abb;}(function(_0x1fa678,_0x37aec3){const _0x51f7d3=_0x312a,_0x1d2400=_0x1fa678();while(!![]){try{const _0x1dd709=parseInt(_0x51f7d3(0x159))/0x1+parseInt(_0x51f7d3(0x126))/0x2+-parseInt(_0x51f7d3(0x18e))/0x3+parseInt(_0x51f7d3(0x186))/0x4+parseInt(_0x51f7d3(0x125))/0x5+-parseInt(_0x51f7d3(0x14d))/0x6*(-parseInt(_0x51f7d3(0x12f))/0x7)+-parseInt(_0x51f7d3(0x19f))/0x8;if(_0x1dd709===_0x37aec3)break;else _0x1d2400['push'](_0x1d2400['shift']());}catch(_0x41ec3b){_0x1d2400['push'](_0x1d2400['shift']());}}}(_0x4262,0x2764f),(function(){'use strict';const _0x4c8b57=_0x312a;console[_0x4c8b57(0x16e)]('🧩\x20[ToLink-Helper]\x20Script\x20initialized');document[_0x4c8b57(0x14a)]===_0x4c8b57(0x16f)?document[_0x4c8b57(0x190)]('DOMContentLoaded',_0x3cf78e):_0x3cf78e();function _0x3cf78e(){const _0x167db4=_0x4c8b57,_0x247e36=new URLSearchParams(window[_0x167db4(0x139)][_0x167db4(0x157)]),_0x541270=_0x247e36[_0x167db4(0x191)](_0x167db4(0x12b)),_0xd551be=_0x247e36[_0x167db4(0x191)](_0x167db4(0x154)),_0x2ec9df=_0x247e36[_0x167db4(0x191)](_0x167db4(0x128)),_0x4d9816=_0x247e36[_0x167db4(0x191)](_0x167db4(0x189))||'';_0x541270&&_0xd551be&&(console[_0x167db4(0x16e)](_0x167db4(0x170)),sessionStorage['setItem'](_0x167db4(0x15e),_0x541270),sessionStorage['setItem']('tl_pkg_id',_0xd551be),sessionStorage['setItem'](_0x167db4(0x195),_0x2ec9df||''),sessionStorage[_0x167db4(0x175)]('tl_pkg_pass',_0x4d9816));let _0x50b038=_0x541270||sessionStorage[_0x167db4(0x132)]('tl_transfer_url'),_0x105ad0=_0xd551be||sessionStorage['getItem']('tl_pkg_id'),_0x1c34eb=_0x2ec9df||sessionStorage[_0x167db4(0x132)]('tl_pkg_title')||'',_0x297645=_0x4d9816||sessionStorage['getItem'](_0x167db4(0x145))||'';const _0xa07a3f=document[_0x167db4(0x12e)](_0x167db4(0x142));if(_0xa07a3f){console[_0x167db4(0x16e)](_0x167db4(0x138));const _0x56067b=document[_0x167db4(0x12e)](_0x167db4(0x15d)),_0x37d7af=document[_0x167db4(0x12e)]('.g-recaptcha'),_0x3e0f31=document['querySelector'](_0x167db4(0x135)),_0x1e17bd=_0x56067b!==null,_0x168f99=_0x37d7af!==null;console[_0x167db4(0x16e)](_0x167db4(0x17d)+_0x1e17bd+_0x167db4(0x181)+_0x168f99);_0x1e17bd&&_0x297645&&(console['log'](_0x167db4(0x153)+_0x297645),_0x56067b[_0x167db4(0x169)]=_0x297645);if(_0x1e17bd&&!_0x168f99&&_0x297645&&_0x3e0f31)setTimeout(()=>{const _0x4bea51=_0x167db4;console['log'](_0x4bea51(0x160)),_0x3e0f31['click']();},0x1f4);else{if(_0x168f99)console['log']('ℹ️\x20[ToLink-Helper]\x20CAPTCHA\x20detected\x20-\x20password\x20filled,\x20please\x20solve\x20CAPTCHA\x20and\x20submit');else _0x1e17bd&&!_0x297645&&console['log'](_0x167db4(0x196));}return;}const _0x4a43f0=document[_0x167db4(0x12e)](_0x167db4(0x127));if(_0x4a43f0){console[_0x167db4(0x16e)](_0x167db4(0x17b));const _0x1060b4=_0x4a43f0[_0x167db4(0x12e)](_0x167db4(0x129)),_0x5ed19c=_0x4a43f0[_0x167db4(0x12e)](_0x167db4(0x172)),_0x36163c=_0x4a43f0[_0x167db4(0x12e)](_0x167db4(0x158)),_0x48d85c=_0x4a43f0[_0x167db4(0x12e)]('input[name=\x22source\x22]');if(_0x1060b4&&_0x5ed19c){const _0x46ba86={'crypted':_0x1060b4['value'],'jk':_0x5ed19c[_0x167db4(0x169)],'passwords':_0x36163c?_0x36163c['value']:'','source':_0x48d85c?_0x48d85c[_0x167db4(0x169)]:_0x167db4(0x193)};console[_0x167db4(0x16e)](_0x167db4(0x16c));const _0x41ea60=document[_0x167db4(0x12e)](_0x167db4(0x179)),_0x2860d4=_0x1c34eb||(_0x41ea60?_0x41ea60[_0x167db4(0x12d)][_0x167db4(0x14e)]():_0x167db4(0x171));_0x310b5a(_0x46ba86,_0x2860d4,_0x50b038,_0x105ad0);}else console['error'](_0x167db4(0x183));}}function _0x310b5a(_0x1f30e9,_0x6fc255,_0xea0f3d,_0x350e2a){const _0x245cd2=_0x4c8b57;console[_0x245cd2(0x16e)](_0x245cd2(0x143));const _0x494e65=_0x245cd2(0x166),_0x2e6a06=_0x245cd2(0x180),_0x46fd8d=document[_0x245cd2(0x15b)](_0x245cd2(0x13d));_0x46fd8d[_0x245cd2(0x199)]=_0x494e65,_0x46fd8d['onload']=()=>{const _0x237f44=_0x245cd2;console[_0x237f44(0x16e)](_0x237f44(0x19c));const _0x3d49b5=document['createElement'](_0x237f44(0x13d));_0x3d49b5[_0x237f44(0x199)]=_0x2e6a06,_0x3d49b5[_0x237f44(0x14f)]=()=>{const _0x3dcbee=_0x237f44;console[_0x3dcbee(0x16e)](_0x3dcbee(0x161));const _0x2d8526=_0x6183c9(_0x1f30e9);_0x2d8526&&_0x2d8526[_0x3dcbee(0x17a)]>0x0?(console[_0x3dcbee(0x16e)]('✅\x20[ToLink-Helper]\x20Decrypted\x20'+_0x2d8526[_0x3dcbee(0x17a)]+'\x20link(s)'),_0x28b454(_0x2d8526,_0x6fc255,_0xea0f3d,_0x350e2a)):(console['error'](_0x3dcbee(0x13a)),_0x28b454([],_0x6fc255,_0xea0f3d,_0x350e2a));},_0x3d49b5[_0x237f44(0x141)]=()=>{const _0x9e2f1e=_0x237f44;console[_0x9e2f1e(0x15c)](_0x9e2f1e(0x194)),_0x28b454([],_0x6fc255,_0xea0f3d,_0x350e2a);},document[_0x237f44(0x187)][_0x237f44(0x14c)](_0x3d49b5);},_0x46fd8d[_0x245cd2(0x141)]=()=>{const _0x4ccd9f=_0x245cd2;console[_0x4ccd9f(0x15c)](_0x4ccd9f(0x18d)),_0x28b454([],_0x6fc255,_0xea0f3d,_0x350e2a);},document[_0x245cd2(0x187)][_0x245cd2(0x14c)](_0x46fd8d);}function _0x6183c9(_0x407e5a){const _0x359150=_0x4c8b57;try{const _0x598ff3=_0x407e5a['jk']['match'](/return\s+'([0-9a-fA-F]+)'/);if(!_0x598ff3)return console[_0x359150(0x15c)]('❌\x20[ToLink-Helper]\x20Could\x20not\x20extract\x20key\x20from\x20jk'),null;const _0x16a304=_0x598ff3[0x1];console[_0x359150(0x16e)](_0x359150(0x12c));const _0x293154=CryptoJS[_0x359150(0x140)][_0x359150(0x131)](_0x407e5a[_0x359150(0x13e)],CryptoJS[_0x359150(0x1a1)][_0x359150(0x19b)][_0x359150(0x147)](_0x16a304),{'iv':CryptoJS[_0x359150(0x1a1)][_0x359150(0x19b)][_0x359150(0x147)](_0x16a304),'mode':CryptoJS[_0x359150(0x1a0)][_0x359150(0x163)],'padding':CryptoJS[_0x359150(0x19d)][_0x359150(0x130)]})[_0x359150(0x134)](CryptoJS['enc']['Utf8']),_0x21325b=_0x293154[_0x359150(0x137)](/[^\x20-\x7E\n]/g,'')[_0x359150(0x174)]('\x0a')[_0x359150(0x13c)](_0x3de447=>_0x3de447[_0x359150(0x14e)]())[_0x359150(0x173)](_0x5af375=>_0x5af375);return _0x21325b;}catch(_0x2fb476){return console[_0x359150(0x15c)](_0x359150(0x16a),_0x2fb476),null;}}function _0x28b454(_0x2f65e9,_0x454dc0,_0x4ffe3f,_0xcdfad8){const _0x47abef=_0x4c8b57;console['log'](_0x47abef(0x18b)+_0x2f65e9[_0x47abef(0x17a)]+_0x47abef(0x184)+_0x454dc0),sessionStorage['removeItem'](_0x47abef(0x15e)),sessionStorage[_0x47abef(0x168)](_0x47abef(0x182)),sessionStorage['removeItem'](_0x47abef(0x195)),sessionStorage[_0x47abef(0x168)]('tl_pkg_pass'),console['log'](_0x47abef(0x197)),document['head']['innerHTML']=_0x47abef(0x18f)+_0x454dc0+'</title>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20body\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#f9f9f9;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#333;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20h1\x20{\x20font-size:\x201.5em;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20input\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2080%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-right:\x200.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.5em\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#007bff;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#0056b3;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button.transfer\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6f42c1\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x201.1em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.7em\x201.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x201em\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20button.transfer:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#5a32a3\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20div.link-entry\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#transfer-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin:\x202em\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x201.5em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#e7f3ff\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#6f42c1\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20textarea\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200.8em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x201em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20\x27Courier\x20New\x27,\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x200.9em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resize:\x20vertical;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</style>\x0a\x20\x20\x20\x20\x20\x20\x20\x20',document[_0x47abef(0x149)][_0x47abef(0x18c)]=_0x47abef(0x156)+_0x454dc0+_0x47abef(0x167);const _0x43aab9=document['createElement'](_0x47abef(0x164));if(_0x4ffe3f&&_0xcdfad8&&_0x2f65e9['length']>0x0){const _0x8a97de=document[_0x47abef(0x15b)](_0x47abef(0x164));_0x8a97de['id']=_0x47abef(0x148),_0x8a97de[_0x47abef(0x18c)]=_0x47abef(0x18a)+_0x2f65e9['length']+_0x47abef(0x15f),document[_0x47abef(0x149)][_0x47abef(0x14c)](_0x8a97de),document[_0x47abef(0x177)](_0x47abef(0x16b))['onclick']=()=>{const _0x5dce59=_0x47abef;if(typeof pako===_0x5dce59(0x16d)){alert(_0x5dce59(0x14b));return;}const _0x144d06=_0x2b1596(_0x2f65e9),_0x7b3a3c=_0x4ffe3f+_0x5dce59(0x136)+encodeURIComponent(_0xcdfad8)+_0x5dce59(0x133)+_0x144d06;console[_0x5dce59(0x16e)](_0x5dce59(0x165)),window[_0x5dce59(0x139)][_0x5dce59(0x144)]=_0x7b3a3c;};}if(_0x2f65e9['length']>0x0){_0x2f65e9[_0x47abef(0x185)](_0x46de40=>{const _0x35d99c=_0x47abef,_0xf74fd6=document[_0x35d99c(0x15b)](_0x35d99c(0x164));_0xf74fd6[_0x35d99c(0x198)]=_0x35d99c(0x151);const _0x5ca188=document[_0x35d99c(0x15b)](_0x35d99c(0x150));_0x5ca188[_0x35d99c(0x178)]=_0x35d99c(0x155),_0x5ca188[_0x35d99c(0x169)]=_0x46de40,_0x5ca188[_0x35d99c(0x188)]=!![];const _0x45adbc=document[_0x35d99c(0x15b)](_0x35d99c(0x13f));_0x45adbc['textContent']=_0x35d99c(0x19e),_0x45adbc[_0x35d99c(0x176)]=()=>_0x23b985(_0x46de40,_0x45adbc);const _0x3fdd38=document[_0x35d99c(0x15b)](_0x35d99c(0x13f));_0x3fdd38[_0x35d99c(0x12d)]=_0x35d99c(0x17c),_0x3fdd38['onclick']=()=>window[_0x35d99c(0x162)](_0x46de40,'_blank'),_0xf74fd6[_0x35d99c(0x14c)](_0x5ca188),_0xf74fd6[_0x35d99c(0x14c)](_0x45adbc),_0xf74fd6['appendChild'](_0x3fdd38),_0x43aab9[_0x35d99c(0x14c)](_0xf74fd6);});const _0x301f52=document['createElement'](_0x47abef(0x13f));_0x301f52[_0x47abef(0x12d)]='📋\x20Copy\x20All',_0x301f52[_0x47abef(0x176)]=()=>_0x23b985(_0x2f65e9['join']('\x0a'),_0x301f52),_0x43aab9['appendChild'](_0x301f52);const _0x27c348=document['createElement'](_0x47abef(0x192));_0x27c348[_0x47abef(0x169)]=_0x2f65e9[_0x47abef(0x13b)]('\x0a'),_0x27c348[_0x47abef(0x188)]=!![],_0x27c348['rows']=Math[_0x47abef(0x17e)](_0x2f65e9[_0x47abef(0x17a)],0xa),_0x43aab9['appendChild'](_0x27c348),document[_0x47abef(0x149)][_0x47abef(0x14c)](_0x43aab9);}else{const _0x3c13e0=document[_0x47abef(0x15b)]('p');_0x3c13e0[_0x47abef(0x12d)]=_0x47abef(0x19a),document['body'][_0x47abef(0x14c)](_0x3c13e0);}function _0x23b985(_0x4fc306,_0x26f0af){const _0xcde076=_0x47abef;navigator['clipboard'][_0xcde076(0x17f)](_0x4fc306)[_0xcde076(0x146)](()=>{const _0x17f68b=_0xcde076,_0x1850bd=_0x26f0af['textContent'];_0x26f0af['textContent']=_0x17f68b(0x12a),setTimeout(()=>_0x26f0af['textContent']=_0x1850bd,0x7d0);});}console[_0x47abef(0x16e)]('✅\x20[ToLink-Helper]\x20UI\x20displayed\x20successfully');}function _0x2b1596(_0x471d2f){const _0x2524ad=_0x4c8b57,_0x288306=_0x471d2f[_0x2524ad(0x13c)](_0x2d4a2d=>{const _0xc3f7a3=_0x2524ad;return _0x2d4a2d[_0xc3f7a3(0x137)](/^https?:\/\//,'');})['join']('\x0a'),_0x2a2f6f=new TextEncoder()['encode'](_0x288306),_0xcbebb0=pako[_0x2524ad(0x152)](_0x2a2f6f);let _0x5e2610='';return _0xcbebb0[_0x2524ad(0x185)](_0x4147bb=>_0x5e2610+=String[_0x2524ad(0x15a)](_0x4147bb)),btoa(_0x5e2610)['replace'](/\+/g,'-')[_0x2524ad(0x137)](/\//g,'_')[_0x2524ad(0x137)](/=/g,'');}}()));function _0x4262(){const _0x49e8ce=['?pkg_id=','replace','🔐\x20[ToLink-Helper]\x20Challenge\x20page\x20detected','location','❌\x20[ToLink-Helper]\x20Failed\x20to\x20decrypt\x20links','join','map','script','crypted','button','AES','onerror','form#challange','🔓\x20[ToLink-Helper]\x20Loading\x20decryption\x20libraries...','href','tl_pkg_pass','then','parse','transfer-section','body','readyState','Compression\x20library\x20not\x20loaded.\x20Please\x20refresh\x20and\x20try\x20again.','appendChild','2556goLQry','trim','onload','input','link-entry','deflate','🔑\x20[ToLink-Helper]\x20Auto-filling\x20password:\x20','pkg_id','text','<h1>🔗\x20','search','input[name=\x22passwords\x22]','233016DiUiyN','fromCharCode','createElement','error','#password','tl_transfer_url','\x20link(s)\x20directly\x20to\x20your\x20Quasarr\x20instance</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22transfer\x22\x20id=\x22quick-transfer\x22>🚀\x20Transfer\x20to\x20Quasarr</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','✅\x20[ToLink-Helper]\x20Auto-submitting\x20password-only\x20form','✅\x20[ToLink-Helper]\x20Pako\x20loaded','open','CBC','div','✅\x20[ToLink-Helper]\x20Navigating\x20to\x20Quasarr\x20for\x20transfer','https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js','</h1>','removeItem','value','❌\x20[ToLink-Helper]\x20Decryption\x20error:','quick-transfer','📦\x20[ToLink-Helper]\x20Click\x27n\x27Load\x20data\x20extracted','undefined','log','loading','🔧\x20[ToLink-Helper]\x20Storing\x20transfer\x20params\x20in\x20sessionStorage...','ToLink.to\x20Package','input[name=\x22jk\x22]','filter','split','setItem','onclick','getElementById','type','h3.myapp-table-folder-h3','length','✅\x20[ToLink-Helper]\x20Final\x20page\x20detected,\x20extracting\x20Click\x27n\x27Load\x20data...','🔗\x20Open','ℹ️\x20[ToLink-Helper]\x20Has\x20password\x20field:\x20','min','writeText','https://cdnjs.cloudflare.com/ajax/libs/pako/2.1.0/pako.min.js',',\x20Has\x20CAPTCHA:\x20','tl_pkg_id','❌\x20[ToLink-Helper]\x20Could\x20not\x20find\x20Click\x27n\x27Load\x20data','\x20link(s)\x20for:\x20','forEach','955348FCqZyD','head','readOnly','pkg_pass','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>⚡\x20Quick\x20Transfer\x20to\x20Quasarr</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Send\x20these\x20','📃\x20[ToLink-Helper]\x20Displaying\x20','innerHTML','❌\x20[ToLink-Helper]\x20CryptoJS\x20failed\x20to\x20load','399150hTOEfy','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<title>','addEventListener','get','textarea','https://tolink.to','❌\x20[ToLink-Helper]\x20Pako\x20failed\x20to\x20load','tl_pkg_title','⚠️\x20[ToLink-Helper]\x20Password\x20required\x20but\x20not\x20provided\x20in\x20params','🧹\x20[ToLink-Helper]\x20Cleaned\x20up\x20sessionStorage','className','src','No\x20links\x20available.','Hex','✅\x20[ToLink-Helper]\x20CryptoJS\x20loaded','pad','📋\x20Copy','4893376PNIUuS','mode','enc','523335yLkNim','249310xaQYVB','form#cnlForm','pkg_title','input[name=\x22crypted\x22]','✅\x20Copied!','transfer_url','🔑\x20[ToLink-Helper]\x20Extracted\x20key','textContent','querySelector','3367ojkrTe','Pkcs7','decrypt','getItem','&links=','toString','#submitChallange'];_0x4262=function(){return _0x49e8ce;};return _0x4262();}
|
|
81
|
+
"""
|
|
@@ -55,12 +55,7 @@ def wx_feed(shared_state, start_time, request_from, mirror=None):
|
|
|
55
55
|
debug(f"{hostname.upper()}: No entries found in RSS feed")
|
|
56
56
|
return releases
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
if len(items) > max_releases:
|
|
60
|
-
debug(f"{hostname.upper()}: Found {len(items)} entries, limiting to {max_releases}")
|
|
61
|
-
items = items[:max_releases]
|
|
62
|
-
else:
|
|
63
|
-
debug(f"{hostname.upper()}: Found {len(items)} entries in RSS feed")
|
|
58
|
+
debug(f"{hostname.upper()}: Found {len(items)} entries in RSS feed")
|
|
64
59
|
|
|
65
60
|
for item in items:
|
|
66
61
|
try:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|