Closed Invictaz closed 2 years ago
Ik ben eigenlijk geen voorstander van het ondersteunen van een "gegeoblockte" website waar ook nog eens een account voor nodig is.
Als jij echter een werkende proxy hebt en je account wilt lenen, dan wil ik er wel eens naar kijken. Ik ga zelf geen account daar aanmaken. Geen behoefte aan. Stuur me dit a.u.b. via e-mail, als je wilt.
Eigenlijk vind ik dit een raar verhaal, want voor de Nederlanders die in België of Duitsland wonen die Xivid willen gebruiken stuiten zij ook op geolock als ze Veronica/SBS invoeren. Dus je spreekt jezelf tegen. Er staat nergens in de README dat Xivid alleen in Nederland te gebruiken is.
Overigens is voor RTLxl ook een account nodig. En die ondersteun jij wel. Ik heb je gemaild met meer gegevens.
Ik spreek mezelf nergens tegen. Ik heb xivid
voor mezelf en andere Nederlanders (met een Nederlands IP-adres) gemaakt. Grote kans dat mensen van over de grens Nederlandse video-urls dan inderdaad niet kunnen openen vanwege een geoblock. Tot nu toe heb ik ook nog geen verzoeken van over de grens gehad.
Met de RTL-extractor doe ik een simpele GET
op http://www.rtl.nl/system/s4m/vfd/version=2/uuid=<UUID>
waar gelijk de HLS videostream is te vinden. Hier is geen account voor nodig.
On-topic:
$ xidel -s "https://www.vier.be/video/de-slimste-mens-ter-wereld/de-slimste-mens-ter-wereld-s18/de-slimste-mens-ter-wereld-s18-aflevering-20" -e '
json(//@data-hero)/data/(playlists)()/(episodes)()[pageInfo/url=$url]/{
"name":concat(
"Vier: ",
program/title,
" S",
seasonNumber,
"E",
episodeNumber
),
"date":format-date(
createdDate * duration("PT1S") + implicit-timezone() + date("1970-01-01"),
"[D01]-[M01]-[Y]"
),
"duration":duration * duration("PT1S") + time("00:00:00"),
"formats":[
{
"id":"hls-0",
"format":"m3u8[manifest]",
"url":x:request({
"headers":"Authorization: [...]",
"url":concat("https://api.viervijfzes.be/content/",videoUuid)
})/json/video/S
}
]
}
'
{
"name": "Vier: De Slimste Mens ter Wereld S18E20",
"date": "12-11-2020",
"duration": "00:53:26",
"formats": [
{
"id": "hls-0",
"format": "m3u8[manifest]",
"url": "https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/DE_SLIMSTE_MENS_TER_WERELD/S18/volledigeafleveringen/1014273651067152701079485601540694101427/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974.m3u8"
}
]
}
_Copy the part after Authorization: and paste that in vier.py as the value of authorizationcode.
Dat heb ik hier boven voor [...]
ingevuld en het blijkt te werken zoals je ziet.
The proper solution would be to figure out how the authentication works [...]
Dat is het hele eieren eten.
Ik heb even die Retrospect url bekeken die je me hebt gestuurd en dat is geen kattenpis. Python is niet mijn expertise. Als jij documentatie daarover kunt vinden (of van de maker kunt krijgen), dan zou me dat enorm helpen.
Maar dan zijn we er nog niet:
$ xidel -s --error-handling=xxx=accept "https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/DE_SLIMSTE_MENS_TER_WERELD/S18/volledigeafleveringen/1014273651067152701079485601540694101427/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974.m3u8" -e '$headers'
HTTP/1.1 403 Forbidden
[...]
Zonder proxy/vpn is de video-url niet te openen.
Nou
Downloadgemist werkt ook om die geoblokkade heen voor VRTNU (ik weet niet hoe)
Die Amazon Cognito is dat wel echt nodig als je middels Xidel dat al kunt genereren? De volledige source staat hier btw:
https://github.com/amazon-archives/amazon-cognito-identity-js/tree/master/src
en
https://github.com/capless/warrant/blob/master/warrant/aws_srp.py
Voor mij was het mogelijk om de M3U8 te extracten, daarna de VPN uit te zetten en die te downloaden. Dus geen idee waarom dat bij jou niet kan. De downloadsnelheid schoot dan omhoog bij mij omdat m'n VPN trager is dan de gewone verbinding. Het zou kunnen dat ze e.e.a. aangescherpt hebben.
Zoals @mrbliss zegt kon ik gewoon de m3u8 eruit vissen en die downloaden. Ik deed dat dan in een externe download manager (niks spannends, gewoon zo'n gratis tooltje zoals van https://www.allavsoft.com/video-downloader-converter.html). Onderhuids is dat gewoon FFMPEG met een schilletje erover.
BTW:
Dit is een non-geo blocked url
En dit is een geo-blocked url
Downloadgemist werkt ook om die geoblokkade heen voor VRTNU (ik weet niet hoe)
Dus ik moet een oplossing daarvoor ook zo uit m'n mouw kunnen schudden? Dit is niet echt aardig van je.
Jij hebt een proxy/vpn, toch? Ik niet. Test jij het eens, zou ik zeggen:
xidel -s --error-handling=xxx=accept --proxy=<ip:port> "https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/DE_SLIMSTE_MENS_TER_WERELD/S18/volledigeafleveringen/1014273651067152701079485601540694101427/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974.m3u8" -e '$raw'
Ik heb geen idee of dit een statische url is, of dat ie vervalt.
Speaking of which, ik had ook nog niet van je gehoord of https://github.com/Reino17/xivid/issues/10#issuecomment-667539770 nu werkt, of niet.
Die Amazon Cognito is dat wel echt nodig als je middels Xidel dat al kunt genereren?
Natuurlijk! Ik zal commandline-opties toe moeten voegen om een gebruikersnaam en wachtwoord op te geven. Deze worden gebruikt om in te loggen, waarna er vervolgens middels een ingewikkelde procedure een lange string wordt gegenereerd die als header achter Authorization:
geplakt dient te worden.
Voor mij was het mogelijk om de M3U8 te extracten, daarna de VPN uit te zetten en die te downloaden.
ffmpeg -hide_banner -i "https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/DE_SLIMSTE_MENS_TER_WERELD/S18/volledigeafleveringen/1014273651067152701079485601540694101427/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974.m3u8"
[https @ 05009a40] HTTP error 403 Forbidden
https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/DE_SLIMSTE_MENS_TER_WERELD/S18/volledigeafleveringen/1014273651067152701079485601540694101427/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974.m3u8: Server returned 403 Forbidden (access denied)
Of je de url nu met xidel
of ffmpeg
opent, hij blijft voorzien van een geoblock.
Zoals @mrBliss zegt [...]
Volgens mij vergeet je hier een url of een citaat.
[...] Dit is een non-geo blocked url
Die is te openen:
ffmpeg -hide_banner -i "https://stream2-vod.cdn1.sbs.prd.telenet-ops.be/non-geo/vier/vanrossem/volledigeafleveringen/5fae02d3159314f6742c0364450aa5c94f6ee2cb/VAN_ROSSEM_1_2_F0261179/Output1600/index.m3u8"
[hls @ 05008cc0] Cannot get correct #EXTINF value of segment https://stream2-vod.cdn1.sbs.prd.telenet-ops.be/[...]/segment205.ts, set to default value to 1ms.
[hls @ 05008cc0] Opening 'https://stream2-vod.cdn1.sbs.prd.telenet-ops.be/[...]/segment0.ts' for reading
[hls @ 05008cc0] Opening 'https://stream2-vod.cdn1.sbs.prd.telenet-ops.be/[...]/segment1.ts' for reading
Input #0, hls, from 'https://stream2-vod.cdn1.sbs.prd.telenet-ops.be/[...]/index.m3u8':
Duration: 00:43:19.00, start: 10.000000, bitrate: 0 kb/s
Program 0
Metadata:
variant_bitrate : 0
Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 960x540 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
variant_bitrate : 0
Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp
Metadata:
variant_bitrate : 0
Stream #0:2: Data: timed_id3 (ID3 / 0x20334449)
Metadata:
variant_bitrate : 0
Het is een statische url, die "1014273651067152701079485601540694101427" is bij mij hetzelfde. Als die url te openen is bij jou middels FFMPEG klopt het dus wat ik zei dat niet voor elke url een proxy nodig is. Sterker nog je zou zelfs kunnen filteren op wat er op server1 staat en wat op server2.
C:\Users\Invictaz\Downloads\Software\Xidel\xidel-0.9.9.20201025.7622.1650cd000ad2.
win32>xidel -s --error-handling=xxx=accept "https://stream1-vod.cdn1.sbs.prd.tel
enet-ops.be/geo/DE_SLIMSTE_MENS_TER_WERELD/S18/volledigeafleveringen/10142736510
67152701079485601540694101427/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974/DE_SLIMS
TE_MENS_TER_WERELD_18_20_F0275974.m3u8" -e '$raw'
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1786918,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=96
0x540
Output1600/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1378222,CODECS="avc1.4d401e,mp4a.40.2",RESOLUTION=76
8x432
Output1200/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=969527,CODECS="avc1.4d401e,mp4a.40.2",RESOLUTION=640
x360
Output800/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=560831,CODECS="avc1.4d400d,mp4a.40.2",RESOLUTION=400
x224
Output400/index.m3u8
N.b. de bekende software gemistdownloader werkt niet middels inloggen. Ik probeer de traffic te sniffen en zal bekijken hoe zij het doen. Of het inloggen is bij hun hardcoded op de server.
Ik heb even verder zitten snuffelen mbt Amazon Cognito. E.e.a. van mijn credentials eruit gehaald uiteraard.
curl "https://cognito-sync.eu-west-1.amazonaws.com/identitypools/eu-west-1^%^3A8bBLABLABLA-43d5-a624-04b494867234/identities/eu-west-1^%^3Aa0af0a2a-25ff-41fb-95da-3de394d13f85/datasets/notifications/records?lastSyncCount=2^&maxResults=1024" ^
-H "authority: cognito-sync.eu-west-1.amazonaws.com" ^
-H "pragma: no-cache" ^
-H "cache-control: no-cache" ^
-H "dnt: 1" ^
-H "x-amz-user-agent: aws-sdk-js/2.676.0 callback" ^
-H "authorization: AWS4-HMAC-SHA256 Credential=BLABLABLA/20201113/eu-west-1/cognito-sync/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token;x-amz-user-agent, Signature=BLABLABLA" ^
-H "content-type: application/json" ^
-H "x-amz-content-sha256: BLABLABLA" ^
-H "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36" ^
-H "x-amz-security-token: IQoJb3JBLABLABLA//////////ARACGgwBLABLABLAW5aV+6sPBLABLABLA" ^
-H "x-amz-date: 20201113T234745Z" ^
-H "accept: */*" ^
-H "origin: https://www.vier.be" ^
-H "sec-fetch-site: cross-site" ^
-H "sec-fetch-mode: cors" ^
-H "sec-fetch-dest: empty" ^
-H "referer: https://www.vier.be/" ^
-H "accept-language: nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7,tr;q=0.6" ^
--compressed
Het zou kunnen dat Gemistdownloader een cookie op de server verkrijgt, echter weet ik dat niet zeker
Request:
https://www.helpdeskweb.nl/app/api.php?key2=SQjfLG1oxq0RFV%2BTSfo3FOf0Wm4yQStG0M6Ka1isM5E%3D&version=2.9.0.12&url=https%3A%2F%2Fwww.vier.be%2Fvideo%2Fniveau-4%2Fniveau-4-s3%2Fniveau-4-gent-s3-aflevering-5%23afleveringen&quality=AUTO
Response:
HTTP/1.1 200 OK
Date: Sat, 14 Nov 2020 01:15:54 GMT
Server: Apache/2
Expires: 0
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Access-Control-Allow-Methods: GET
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Sat, 14 Nov 2020 01:00:00 GMT
Vary: Accept-Encoding,User-Agent
X-Forwarded-Proto: https
Content-Type: text/plain; charset=utf8
Content-Length: 881
{"broadcasting":{"vidurl":"https:\/\/stream1-vod.cdn1.sbs.prd.telenet-ops.be\/geo\/NIVEAU_4_GENT\/S3\/volledigeafleveringen\/1013863229611252701083589925009694101386\/NIVEAU_4_GENT_3_5_F0274277\/NIVEAU_4_GENT_3_5_F0274277.m3u8","title":"Niveau 4 Gent","episo":"S3 - Aflevering 5","dateS":"20200923","dateL":"23 september 2020","descr":"Het bijzondere bijstandsteam COPS wordt op vraag van de onderzoeksrechter in Gent naar een gewapende man gestuurd in een bijzonder gevoelig dossier.","chan":"Vier","thumb":"https:\/\/images.viervijfzes.be\/www.vier.be\/production\/meta\/niveau-4-y03-e05-f0273832mp400114502still005-qh3ktd.jpg?auto=format&fit=max&h=630&ixlib=php-1.1.0&q=100&w=1200&s=338f71059fd6bd658d610e8b4949b2ae","seasonid":3,"episodeid":5,"breaks":[820000,1692000],"locations":["BE"],"refrsh":false,"vidDD":false,"vidDDE":".mp4","vidADPT":true,"qualities":{"360p":".mp4"}}}
Het plaatje opvragen bij die aflevering gebeurt via
GET /www.vier.be/production/meta/niveau-4-y03-e05-f0273832mp400114502still005-qh3ktd.jpg?auto=format&fit=max&h=630&ixlib=php-1.1.0&q=100&w=1200&s=338f71059fd6bd658d610e8b4949b2ae HTTP/1.1 Host: images.viervijfzes.be Connection: Keep-Alive
De aflevering opvragen doet Gemistdownloader via:
GET /geo/NIVEAU_4_GENT/S3/volledigeafleveringen/1013863229611252701083589925009694101386/NIVEAU_4_GENT_3_5_F0274277/NIVEAU_4_GENT_3_5_F0274277.m3u8 HTTP/1.1 User-Agent: Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko Accept: */* Range: bytes=0- Connection: close Host: stream1-vod.cdn1.sbs.prd.telenet-ops.be Icy-MetaData: 1
Amazon Cognito Identity (de vorige was Sync)
:method: POST
:authority: cognito-identity.eu-west-1.amazonaws.com
:scheme: https
:path: /
content-length: 1509
x-amz-content-sha256: 4875282f7aab24bb4bd7ca196515e26ed1f028f8442b3dbf20cdBLABLABLA
x-amz-target: AWSCognitoIdentityService.GetCredentialsForIdentity
x-amz-user-agent: aws-sdk-js/2.676.0 callback
user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36 Edg/86.0.622.68
content-type: application/x-amz-json-1.1
accept: */*
origin: https://www.vier.be
sec-fetch-site: cross-site
sec-fetch-mode: cors
sec-fetch-dest: empty
referer: https://www.vier.be/
accept-encoding: gzip, deflate, br
accept-language: nl,en;q=0.9,en-GB;q=0.8,en-US;q=0.7
{"Logins":{"cognito-idp.eu-west-1.amazonaws.com/eu-west-1_dViSsKM5Y":"BLABLABLA"},"IdentityId":"eu-west-1:a0af0a2a-25ff-41fb-95da-BLABLABLA5"}
:method: POST
:authority: api.viervijfzes.be
:scheme: https
:path: /personalization
content-length: 1778
authorization: eyJraWQiOiJCSHZsMjdjNzdGRBLABLABLA-L4O92x9g
user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36 Edg/86.0.622.68
content-type: application/json
accept: */*
origin: https://www.vier.be
sec-fetch-site: cross-site
sec-fetch-mode: cors
sec-fetch-dest: empty
referer: https://www.vier.be/
accept-encoding: gzip, deflate, br
accept-language: nl,en;q=0.9,en-GB;q=0.8,en-US;q=0.7
{"action":"PAGE_VIEW","metadata_sessionStart":1605318739,"metadata_sessionDuration":1,"metadata_timestamp":1605318740,"metadata_device_width":1536,"metadata_device_height":864,"metadata_device_orientation":"landscape-primary","metadata_browser_width":1536,"metadata_browser_height":755,"metadata_browser_scrollY":0,"metadata_browser_ua":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36 Edg/86.0.622.68","metadata_page_site":"vier","metadata_page_url":"https://www.vier.be/cook-ensemble","metadata_page_nodeId":"34849","metadata_page_title":"Cook Ensemble","metadata_page_description":"Jammer genoeg is er een nieuwe lockdown en kunnen we nu niet eten samen met familie en vrienden... Maar koken gaat nog wel! Jani en Dominique koken elke dag vanuit hun eigen kot live samen met gasten.","metadata_page_type":"program","metadata_page_program":"Cook Ensemble","metadata_page_programId":"34849","metadata_page_programUuid":"1c20f1b4-8879-4f35-be1c-a4e0a57dac35","metadata_page_programKey":"cook_ensemble","metadata_page_tags":["Cook Ensemble","Jani Kazaltzis","Dominique Persoone"],"metadata_page_publishDate":1604926657,"metadata_page_unpublishDate":0,"metadata_page_author":"Michiel Gulickx","metadata_ads":true,"data_nodeId":"","data_videoType":"","data_creativeId":"","data_videoAd":false,"data_videoDuration":0,"data_videoPosition":0,"data_videoVolume":0,"data_videoMuted":false,"data_videoPlaying":false,"data_videoFullscreen":false,"data_playlistVideos":0,"data_playlistVideoUrls":[],"user_username":"o7n0wkosBLABLABLA","user_name":"","user_gender":"x","user_birthdate":-3600,"user_birthdate_day":1,"user_birthdate_month":1,"user_birthdate_year":1970,"user_custompostal_code":"AAAA","user_customcity":""}
Die AccessToken en Autorization zijn dus hetzelfde... Dacht ik?!
:method: POST
:authority: cognito-idp.eu-west-1.amazonaws.com
:scheme: https
:path: /
content-length: 999
x-amz-content-sha256: cf8562087306605131d5337c92cb907cf661ad6b3734b7da79110ea49ba4a41b
x-amz-target: AWSCognitoIdentityProviderService.GetUser
x-amz-user-agent: aws-sdk-js/2.177.0 callback
user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36 Edg/86.0.622.68
content-type: application/x-amz-json-1.1
accept: */*
origin: https://www.vier.be
sec-fetch-site: cross-site
sec-fetch-mode: cors
sec-fetch-dest: empty
referer: https://www.vier.be/
accept-encoding: gzip, deflate, br
accept-language: nl,en;q=0.9,en-GB;q=0.8,en-US;q=0.7
{"AccessToken":"eyJraWQiOiJOR29oR1BtSjBLT-BLABLABLA"}
Als die url te openen is bij jou middels FFMPEG klopt het dus wat ik zei dat niet voor elke url een proxy nodig is.
Alleen met non-geo
in de url dus. Heb je de programma-url hier ook van? Ik kan 'm niet vinden op https://www.vier.be/van-rossem.
C:\Users\Invictaz\Downloads\Software\Xidel\xidel-0.9.9.20201025.7622.1650cd000ad2.win32>xidel -s --error-handling=xxx=accept "https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/[...]/DE_SLIMSTE_MENS_TER_WERELD_18_20_F0275974.m3u8" -e '$raw' #EXTM3U [...]
Dit is met je VPN aan, neem ik aan? En als je 'm nu eens uit zet? Daar gaat 't natuurlijk om.
gemistdownloader werkt niet middels inloggen... mijn credentials eruit gehaald uiteraard
Dit spreekt elkaar tegen. Als je bij GemistDownloader geen gebruikersnaam en wachtwoord hoeft op te geven, dan had je ook geen credentials hoeven te verwijderen.
Die AccessToken en Autorization zijn dus hetzelfde... Dacht ik?!
[edit]
Ik heb geen idee. Ik zie geen AccessToken voorbij komen in mijn netwerkverkeer.
Verkeerd gekeken. Ik zie 'm wel voorbij komen. Zijn niet hetzelfde.
[/edit]
Het gaat er in ieder geval om hoe na het inloggen die "Autorization"-string wordt gegenereerd. Als je die hebt, dan kun je daarmee de HLS videostream achterhalen (zoals ik hier boven al hebt aangetoond).
Ik schuif dit even op de lange termijn. Ik wil eerst de huidige extractors verhuizen naar de functie-module.
Als je in de tussentijd waardevolle informatie hebt/krijgt, post het gerust.
Die volledige aflevering van van Rossem is offline. Gek dat jij hem wel kon zien. Althans de chunks van de avc file. De Belgen staan erom bekend iets van de site af te halen maar het bewuste bestand niet. De URL was https://stream2-vod.cdn1.sbs.prd.telenet-ops.be/non-geo/vier/vanrossem/volledigeafleveringen/8b68735ba41c4ac51ff2822a88e9601d7837f447/VAN_ROSSEM_1_1_F0260507/Output1600/index.m3u8. De programma url heb ik niet meer.
De volgende programma url's zijn in elk geval non-geo waarmee je kan oefenen zonder proxy oid.
https://www.vier.be/jeroom-in-lockdown https://www.vier.be/video/bake-off-vlaanderen/bake-off-vlaanderen-s4/bake-off-vlaanderen-s4-aflevering-1 https://www.vier.be/video/huizenjagers/huizenjagers-s7/huizenjagers-s7-aflevering-14
Have fun
Ik heb een deel zelf binnengehaald via sniffen van de browser (met geanonimizeerde credentials) en een deel gesnift van Gemistdownloader (zonder credentials idd).
https://www.vier.be/video/huizenjagers/huizenjagers-s7/huizenjagers-s7-aflevering-14
Ik heb deze even geprobeerd. De video-url is inderdaad non-geo
. Inloggen was wel nodig om deze bemachtigen.
Zou jij die xidel
-commendo nog eens uit willen voeren? Ik zou toch nog wel graag willen weten of jij zonder VPN die geo
url kan openen.
P.s. Voor Windows gebruik je dubbele aanhalingstekens voor de query; -e "$raw"
. Voor Unix enkele; -e '$raw'
. Hoewel het voor zo'n simpele query als deze niet uitmaakt.
Morgen kijk ik er naar
Vier/vijf/zes is nu Goplay.be geworden. De inloggegevens werken nog gewoon.
curl 'https://license.theoplayer.com/' \
-H 'Connection: keep-alive' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36' \
-H 'DNT: 1' \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'Accept: */*' \
-H 'Origin: https://www.goplay.be' \
-H 'Sec-Fetch-Site: cross-site' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Referer: https://www.goplay.be/' \
-H 'Accept-Language: nl-NL,nl;q=0.9' \
--data-raw 'DLBo0SBr3LhtTS0i0laVflfi3ua_0SfzFS0iTuB-3uRz36k1TQacFSai0uf_0u5_TuazTOfVfe0zxBA1mBrEYzjpFhrgPo11S4gIakke3Qg8bwcySoi-Secy8z30xX0RSocWSlxBYmfVflfp3Lfp0OfVflfi0QBc0S0iFSBc3uB-3uxl3Ok1Tuh_FSfc0uBi0S5_Tuai0OfVfG4pdorqUo_6FX-W0OicFuBo0SBr3LhtTS0i0l0VfKBLABLABLAtxZIDX-0mkoWoapCoxp0mrLCG0pbwPeFGxgWQ4pIYa-WtALFKPgFoUgWZj84e4mYzxXYzjuxhXAS6jS0mjoWocVIDxNIo41IKcgUK4ZdDrGID_q0S5c3uBo0SBL3LfZ0S0k0lbi0S5t0uhi0uRzTSeiTuCr3uBi0Sac36j84e4mYzxXYzjuxhXASg2cYLXyxl5Z3LC_0LRqSkIXhgjBx4j8az4Aahry042cYzCi0lboTu0_FKzLUSR6Y4kU' \
--compressed
API is nog steeds hetzelfde blijkbaar
Die geo url's
zonder proxy
met proxy
Toch moet het wel te omzeilen zijn.
curl 'https://license.theoplayer.com/' \ [...]
Is dit nodig ergens voor?
\<plaatje-waar-ik-geen-tekst-uit-kan-koppiepeesten>
met proxy
Geen DRM?
Zoals al eerder gezegd is er geen DRM. Ik weet nog niet waar die license.theoplayer.com voor is. Gelieve zelf even te kijken.
hoi, iemand al verder gekomen dan de login voor goplay ? ik kan alles zelf opvragen behalve het login gedeelte... als je auth uit browser neemt is deze maar 15min geldig :/ dus zou moeten vinden hoe ik inlog en deze code krijg iemand van jullie een idee ?
Dat gaat waarschijnlijk via die license server?
@Reino17 er is inmiddels ook een app van Goplay https://apkcombo.com/nl/goplay/be.goplay.app/
Wellicht kun je hieruit wat informatie halen.
Sorry, ik kan geen apps ontleden.
Ik ben bang dat ik je hier vooralsnog niet mee kan helpen. Op mijn smartphone wordt goplay.be wel goed weergegeven, maar niet met mijn browser op mijn stok oude computer. Wil ik kunnen achterhalen hoe die "Authorization: [...]"-header precies in z'n werk gaat, dan heb ik eerst een nieuwe computer nodig.
Begin dit jaar had ik het plan om een AMD Ryzen 5 5600X (Zen3) cpu en een AMD Radeon RX 6800 gpu te kopen, maar de beschikbaarheid van de videokaart gooide roet in het eten. Ik wacht daarom nog even. Misschien wel totdat de refresh (Zen3+) of de volgende generatie (Zen4) uitkomt.
Maar goed, dan heb je nog steeds het gedoe met het verplichte account. Ik weet gewoon niet of dat mogelijk is met xidel
. Als het wel kan, dan kunnen we het ook gewoon bij een xidel
-commando laten die jij dan kunt gebruiken, want een extractor waar inloggegevens voor nodig zijn wil ik eigenlijk niet in xivid
hebben.
Wat ik ondertussen wel heb gezien is dat vier.be doorverwijst naar goplay.be en dat het achterhalen van de video-informatie daar net zo gaat als ik in mijn 2e post hier heb laten zien.
xidel.exe -s "https://www.goplay.be/video/de-slimste-mens-ter-wereld/de-slimste-mens-ter-wereld-s19/de-slimste-mens-ter-wereld-s19-aflevering-7" -e ^"^
parse-json(//@data-hero)/data/(playlists)()/(episodes)()[pageInfo/url=$url]/{^
'name':x'{pageInfo/brand}: {pageInfo/title}',^
'date':createdDate * duration('PT1S') + dateTime('1970-01-01T00:00:00Z'),^
'duration':duration * duration('PT1S')^
}^
"
{
"name": "Play4: De Slimste Mens Ter Wereld - S19 - Aflevering 7",
"date": "2021-10-27T19:47:00Z",
"duration": "PT1H21S"
}
Je bent in elk geval al verder gekomen. Overigens is er ook wel een oplossing voor je pc probleem. Een virtuele pc bijvoorbeeld via de cloud. De vraag is of die op stokoude browsers werkt. Een andere optie is een goedkopere raspberry pi 4 kopen. Die kan ook Windows 10 ARM draaien.
Tijd om dit issue maar weer eens aan te slingeren lijkt me.
Youtube-DL heeft ingebouwde Geo bypass, wellicht ook nuttig voor GoPlay
[...] een extractor waar inloggegevens voor nodig zijn wil ik eigenlijk niet in
xivid
hebben.
Hier sta ik nog volledig achter. Daarom wil ik het graag hier bij laten. Sorry.
Misschien dat youtube-dl
of yt-dlp
iets voor je kunnen betekenen.
Je motivering begrijp ik niet. Rtlxl.nl vereist voor de eindgebruiker ook inloggen. Dat de video's ook zonder inloggen te achterhalen zijn, weet je als eindgebruiker niet. Wellicht is dat ook voor GoPlay zo. Het zou kunnen dat het e.e.a. met Amazon Cognito gewoon niet nodig is. Ik vermoed van niet omdat tokens steeds vaker worden gevraagd, maar wellicht is het te proberen.
Daarnaast zullen er steeds meer sites komen met inlogschermen.
De volledige API is inmiddels gedocumenteerd
https://github.com/add-ons/plugin.video.viervijfzes/wiki/Installatie
Het zou kunnen dat het e.e.a. met Amazon Cognito gewoon niet nodig is.
Ik ben bang van wel; https://github.com/add-ons/plugin.video.viervijfzes/wiki/API%3A-Auth:
vier.be, vijf.be en zestv.be are using Amazon Cognito for authentication.
Mocht jij, of iemand anders, toch een manier vinden om zonder die authenticatie de nodige videogegevens (belangrijkste natuurlijk de video-url(s)) te kunnen bemachtigen, dan mag je gerust de issue heropenen.
ik heb het fixed in mijn script door
'aws = AwsIdp(pool_id='eu-west-1_dViSsKM5Y', client_id='6s1h851s8uplco5h6mqh1jac8m')'
uit yt-dlp te gebruiken
kan gerust het hele script posten
@beantje Graag, al moet ik zeggen dat Xivid geen python gebruikt...
ah oei, alles is in python helaas
Ik vind dit heel vreemd. Je post actief een reactie hier om er vervolgens achter te komen dat mijn hobbyproject niet in Python geschreven is. Heel eigenaardig.
Ik mag dan Python niet machtig zijn, ik begrijp in de basis nog wel wat er ongeveer gebeurt. Het lijkt erop dat je uitkomst van een functie genaamd Awsldp
(met 2 parameters) in een variabele genaamd aws
stopt.
Maar misschien kun je in eerste instantie uitleggen waar je dit vandaan hebt. Ik kan dit in ieder geval nergens in de yt-dlp
broncode terug vinden. Van wie is deze client_id?
Vooralsnog lijkt een methode zonder authenticatie dus niet mogelijk.
@Reino17 niet flauw doen, het kan toch dat hij dat niet wist. Ik waardeer zijn goede poging wel. Hij wil ons helpen en zoveel GoPlay scripts zijn er niet. Dus logisch dat je dan hier uitkomt als je googled. Het kan zijn dat hij die zaken uit de API haalde die ik postte. aws staat voor amazon web services en hoort dus bij die Amazon Cognito authentificatie meuk.
@beantje Post het hele script maar. Wie weet hebben we er wat aan.
ik zocht naar oplossingen en toe kwam ik hier terecht, ondertussen zelf alles gevonden wat ik nodig had om een script te maken,
url = input()
headers = {
'Host': 'www.goplay.be',
'cache-control': 'max-age=0',
'sec-ch-ua': '"Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'sec-fetch-dest': 'document',
'accept-language': 'tr,en;q=0.9,tr-TR;q=0.8,en-US;q=0.7',
}
content = requests.get(url, headers=headers).text
r = re.search(r'<div data-hero="([^"]*)"', content )
unsorted = (r.group(0))
unsorted = unsorted[16:]
unsorted = unsorted[:-1]
data = unsorted.replace('"', '"')
test = json.loads(data)
info = json.loads(data)['data']['playlists']
playlists = json.loads(data.replace('"', '"'))['data']['playlists']
title = test['data']['title']
wanted_playlist = [x for x in playlists if x['pageInfo']['url'] in url][0]
wanted_episode = [x for x in wanted_playlist['episodes'] if x['pageInfo']['url'] == url][0] or [x for x in wanted_playlist['episodes'] if x['pageInfo']['url'] in url][0]
video_id = wanted_episode['videoUuid']
aws = AwsIdp(pool_id='eu-west-1_dViSsKM5Y', client_id='6s1h851s8uplco5h6mqh1jac8m')
id_token, _ = aws.authenticate(username=username,password=password)
_logged_in = True
headers = {
'authorization': id_token,
}
apiurl = (f"https://api.viervijfzes.be/content/{video_id}")
res = requests.get(apiurl, headers=headers)
mpd = res.json()['video']['S']
if re.findall(r'Output2800/index.m3u8', requests.get(mpd).text):
mpd = mpd.split("/")[:-1]
mpd = '/'.join(map(str, mpd))
mpd = mpd + ("/Output2800/index.m3u8")
else:
mpd = mpd
# print(mpd)
# print(filename)
dit is een stuk ervan, en klopt was geen ytp-dl daar heb ik de rest uit gehaald login komt van deze
https://github.com/add-ons/plugin.video.viervijfzes/tree/master/resources/lib/viervijfzes
@beantje stop alles aub in een een mooie code tag. Die copy paste maakt Github een diarree van.
ja dat merk ik, maar ik ben dan ook geen code schrijver :/ ik kan er een beetje van door gepruts en dat zie je ook aan mijn scripts
Edit: is toch wel wat ingewikkelder dan ik dacht.
aangepast kijk nu nog eens, kon niet zomaar heel het script nemen aangezien deze niet alleen goplay doet -_-
en kan wrs allemaal beter en kleiner, maar zoals gezegd ik ken er nu ook niet zo veel van :)
Voor iemand die zegt geen code te kunnen schrijven is dit toch behoorlijk goed.
Moeten die headers echt meegestuurd worden?
Vreemd genoeg zie ik in jouw code nergens een geoblock bypass. Of ben je een Belg?
@Reino17 ik mag mijn eigen issues niet reopenen...
_Het ziet er niet heel spannend uit. Je stuurt een clientid, een username en een password naar de API en dat was het. Dan krijg je middels de videoid de json zie ik?
Klopt. Dat heb ik hier ook gedemonstreerd, https://github.com/Reino17/xivid/issues/12#issuecomment-727071334:
x:request({ "headers":"Authorization: [...]", "url":concat("https://api.viervijfzes.be/content/",videoUuid) })
_Copy the part after Authorization: and paste that in vier.py as the value of authorizationcode.
Dat heb ik hier boven voor
[...]
ingevuld en het blijkt te werken zoals je ziet.Moeten die headers echt meegestuurd worden?
Ja dus. A.d.h.v. de inloggegevens wordt een id_token gegenereerd en die stuur je mee in de header.
En de code is dus van Kodi. Zoiets dacht ik al.
ik mag mijn eigen issues niet reopenen...
Daar is tot dus ver ook geen reden voor, omdat er voor zover mij bekend geen methode zonder authenticatie is.
Voor iemand die zegt geen code te kunnen schrijven is dit toch behoorlijk goed.
Moeten die headers echt meegestuurd worden?
Vreemd genoeg zie ik in jouw code nergens een geoblock bypass. Of ben je een Belg?
nja de code werkt maar kan volgens mij veel beter geschreven worden, ik ben een belg ja dus nog niet echt gekeken naar hoe de geoblock werkt, en ik denk dat de headers moesten ja is al een tijd geleden dat ik dit geschreven heb ( werkt nog steeds ;) )
Zal best een pittige worden gok ik.
-Inloggen vereist al is een account zeer simpel te maken (wellicht dat je hier ook omheen kan of dit kan hard coden, zie onder) -Proxy of VPN nodig om de geoblock te kunnen omzeilen. Alhoewel SBS en RTL ook geolock hebben.
Een Vlaamse developer heeft e.e.a. al uitgevogeld:
Op Vier.be staat ook veel spul wat (voorheen) bij RTL Nederland stond, is dan nu verkocht aan België en bevat ondertitels.
Bij RTL Nederland staat het nog wel, maar dan verhuist het naar Videoland (betaald). Vier.be is gratis.
E.e.a. heeft geen haast, voorbeeldje in bijlage.
vier.zip