-
Notifications
You must be signed in to change notification settings - Fork 10.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Site-Support-Request] openload.co / openload.io #8489
Comments
Judging by the URLs alone, this page seems to specialize in infringing copyright. See our FAQ for more details. |
I'ts not (as far as i know), maby in this case, but it's only an example. It's similar to streamcloud.eu which is also supported. |
Alright, then please provide an example URL that does not infringe copyright and we will reopen this issue. |
So should i upload a video by myself? Is that okay? |
Just pick any video - uploaded by you or anyone else. |
All links are updated! |
Javascript at |
I just looked at the source of a video there, that is some nasty looking Javascript, holy mother of god.. I mean, where do you even start, honestly? |
Take https://openload.co/f/kUEfGclsU9o for example. There's a
Paste this scripts to a file
You'll get some errors, while the video link is in the error message:
Things are changed since 3 days ago. I guess this approach won't be valid for a long time. |
What kind of black magic is this? ;-) |
Some luck :D |
FYI @yan12125
so decoded below; $('#realdl a').attr("href", 'https://1fgm8g5.oloadcdn.net/dl/l/X0LcwitFo3U/kUEfGclsU9o/skyrim_no-audio_1080.mp4'); offline decoder e.g. AADecode aadecode.py but unknown license both. openload uses some obfuscators other section ... :-/ |
I've clearfied the license of my aadecode program. Thanks. But I think that it is difficult to use aadecode code. Because aadecode is written in JavaScript and uses |
Okay, code obfuscation is not exactly brand new, obviously. But what really surprised me here is the fact you only used Node. Did not see that coming. The This project has no license information (yet), so I just opened an issue there to clear that up. Regarding the use of this aadecode written in Javascript or other external libraries or programs or whatever, I don't think that is really a problem. Right now, youtube-dl already has one external dependency which is basically essential: FFmpeg. But that is easy to use, available on all platforms, and distributed as a single, simple static binary. https://nodejs.org/en/download/ Binaries for all platforms ;-) |
Since deobfuscation is possible with pure Python, it's better to do that with pure Python. Node usage for Openload ends here. Here's some of my tries on Node. May benefit other sites:
from __future__ import unicode_literals
from .common import InfoExtractor
from ..compat import subprocess_check_output
RUNNER_JS = '''
// Simplified from the example on https://nodejs.org/api/vm.html
var vm = require('vm'), fs = require('fs');
var sandbox = {
window: {},
};
(new vm.Script(fs.readFileSync('tmp2.js'))).runInNewContext(sandbox);
console.log(sandbox.window.vr);
'''
class OpenloadIE(InfoExtractor):
_VALID_URL = r'https://openload.co/f/(?P<id>[a-zA-Z0-9]+)'
_TEST = {
'url': 'https://openload.co/f/kUEfGclsU9o',
'md5': 'bf1c059b004ebc7a256f89408e65c36e',
'info_dict': {
'id': 'kUEfGclsU9o',
'ext': 'mp4',
'title': 'skyrim_no-audio_1080.mp4',
},
}
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
code = self._search_regex(
r'<video[^>]+>\s*<script[^>]+>([^<]+)</script>',
webpage, 'JS code')
with open('tmp2.js', 'wb') as f:
f.write(code.encode('utf-8'))
result = subprocess_check_output(['node', '-e', RUNNER_JS])
return {
'id': video_id,
'title': self._og_search_title(webpage),
'url': result.decode('utf-8').strip(),
}
I guess the obfuscated code is equivalent to:
|
Use #!/usr/bin/python
# -*- coding: utf-8 -*-
import re
def aadecode(txt):
b = [ "(c^_^o)",
"(゚Θ゚)",
"((o^_^o) - (゚Θ゚))",
"(o^_^o)",
"(゚ー゚)",
"((゚ー゚) + (゚Θ゚))",
"((o^_^o) +(o^_^o))",
"((゚ー゚) + (o^_^o))",
"((゚ー゚) + (゚ー゚))",
"((゚ー゚) + (゚ー゚) + (゚Θ゚))",
"(゚Д゚) .゚ω゚ノ",
"(゚Д゚) .゚Θ゚ノ",
"(゚Д゚) ['c']",
"(゚Д゚) .゚ー゚ノ",
"(゚Д゚) .゚Д゚ノ",
"(゚Д゚) [゚Θ゚]"
];
delim = "(゚Д゚)[゚ε゚]+"
hexpref = "(o゚ー゚o)"
ret =''
for aachar in txt.split(delim):
for i in (2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 0):
aachar = aachar.replace(b[i], format(i, 'x'))
aachar = aachar.replace('+ ', '')
if aachar.find(hexpref) == 0:
m = re.search(r'[a-f\d]+', aachar)
if m:
ret += unichr(int(m.group(0), 16))
else:
m = re.match(r'^\d+', aachar)
if m:
ret += chr(int(m.group(0), 8))
return ret |
@vitstradal It would be great if youtube-dl can exploit this |
Public domain it is. Yes, I wrote it by my bare hands! To be exact I borrow array |
I've tried the obfuscated code mentioned above:
Am I missing something? |
Sorry, I was misled by noromanba's comment. My |
Second try: #!/usr/bin/python
# -*- coding: utf-8 -*-
# autor: [email protected]
# licence: public domain
import re
import sys
def aadecode(txt):
c = [
('7', '((゚ー゚) + (o^_^o))'),
('6', '((o^_^o) +(o^_^o) +(c^_^o))'),
('5', '((゚ー゚) + (゚Θ゚))'),
('4', '(-~-~(!+[]+!+[]))'),
('3', '(-~-~1)'),
('2', '(!+[]+!+[])'),
('1', '(+!+[])'),
('0', '((c^_^o)+(c^_^o))'),
]
delim = "(゚Д゚)[゚ε゚]+"
ret =''
for aachar in txt.split(delim):
for i in range(len(c)):
val,pat = c[i]
aachar = aachar.replace(pat, val)
aachar = aachar.replace('+ ', '')
#print aachar
m = re.match(r'^\d+', aachar)
if m:
ret += chr(int(m.group(0), 8))
return ret
s = sys.stdin.read()
print aadecode(s) |
FYI here is working plugin for openload for kodi. https://github.com/Zanzibar82/plugin.video.streamondemand/blob/master/servers/openload.py |
Many thanks to @vitstradal for the hard work on working for Openload Javascript deobfuscation. A quick try 4 days ago works for me. However, openload has improved its technique as well. We may need to reconsider use external Javascript interpreter like node. Though I'm not sure whether it's acceptable by other developers or not. |
No big deal, they have only small imagination: #!/usr/bin/python
# -*- coding: utf-8 -*-
# autor: [email protected]
# licence: public domain
import re
import sys
# no `itoa` in python, really?
# itoa stolen from: http://www.codecodex.com/wiki/Base_conversion
# We have to write our own function for outputting to string with arbitrary base
def itoa(num, radix):
result = ""
while num > 0:
result = "0123456789abcdefghijklmnopqrstuvwxyz"[num % radix] + result
num /= radix
return result
def openload_level2_debase(m):
radix, num = int(m.group(1)) + 27 , int(m.group(2))
return '"' + itoa(num, radix) + '"'
def openload_level2(txt):
return re.sub(r'\((\d+),(\d+)\)', openload_level2_debase, txt).replace('"+"', '')
def openload_decode(txt):
c = [
('7', '((゚ー゚) + (o^_^o))'),
('6', '((o^_^o) +(o^_^o) +(c^_^o))'),
('5', '((゚ー゚) + (゚Θ゚))'),
('4', '(-~3)'),
('3', '(-~-~1)'),
('2', '(-~1)'),
('1', '(-~0)'),
('0', '((c^_^o)-(c^_^o))'),
]
delim = "(゚Д゚)[゚ε゚]+"
ret = ''
for aachar in txt.split(delim):
for i in range(len(c)):
val,pat = c[i]
aachar = aachar.replace(pat, val)
aachar = aachar.replace('+ ', '')
m = re.match(r'^\d+', aachar)
if m:
ret += chr(int(m.group(0), 8))
return openload_level2(ret)
s = sys.stdin.read()
print openload_decode(s) |
Thanks for the fix. Here's a minor issue. Your decode function gives:
While node.js gives:
The function name |
Ok, little improvement: |
Thanks to @vitstradal openload.co/openload.io will be supported in the next version. @vitstradal Would you like to be listed in AUTHORS? If so, under what name? |
@yan12125: I'll be honored. But I thing they change it little bit in month or so. My name is Viťas Strádal. |
Done in 7caae12.
It's OK as youtube-dl has a rapid release schedule. |
Is it working? |
@d4rkuzs It's still working. Please open a new issue if you have problems. |
Main Site:
https://openload.co
https://openload.io
Examples:
Site:
https://openload.co/f/kUEfGclsU9o
orhttps://openload.co/f/kUEfGclsU9o/skyrim_no-audio_1080.mp4
When i hit the "Download" Button ->
https://1fgm8g5.oloadcdn.net/dl/l/L-cXcAg4l1I/kUEfGclsU9o/skyrim_no-audio_1080.mp4
[Edit] It looks like it's only for my IP or something.
Embedded:
https://openload.co/embed/kUEfGclsU9o/
orhttps://openload.co/embed/kUEfGclsU9o/skyrim_no-audio_1080.mp4
Raw:
https://openload.co/stream/kUEfGclsU9o~1455150454~2a02:908::~kUlsCIZZ?mime=true
When you open it ->
https://1fgm8g5.oloadcdn.net/dl/l/46qaqObFdNY/kUEfGclsU9o/skyrim_no-audio_1080.mp4?mime=true
Thumbnail:
https://thumb.openload.co/splash/kUEfGclsU9o/ePl2KfL6O2E.jpg
In some cases i have an
openload.io/embed/VIDEO_ID
url, but when i change theembed
tof
(which should me give the video page) it don't work!I hope you can add it! ♥
The text was updated successfully, but these errors were encountered: