yt-dlp icon indicating copy to clipboard operation
yt-dlp copied to clipboard

kick.com videos - HTTP Error 403: Forbidden

Open Cragsand opened this issue 1 year ago • 26 comments

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

  • [X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

Region

Sweden

Provide a description that is worded well enough to be understood

Yt-dlp gets stuck on a 403 forbidden error on kick.com video sites. The site still works and plays in browser but I do get redirected via a cloudflare site which I'm suspecting is the problem. The website version works and plays the video without requiring login on Firefox and Chrome. I'm on the latest 2023.03.04 version of yt-dlp.

Debugging attempts: Using session cookies via --cookies cookies.txt downloaded through a browser extension does not work. Still getting a 403 error.

Forcing the user agent to be Mozilla via --user-agent "Mozilla/5.0" has no effect. Still getting a 403 error.

Grabbing the m3u8 stream from inspecting memory in browser and downloading it via yt-dlp that way works i.e: yt-dlp https://stream.kick.com/ivs/v1/196233775518/LfDRYYsAP6oJ/2023/4/8/2/37/iddbzqX5UQuJ/media/hls/master.m3u8

Hence it seems to not be able to resolve the website.

If there is a way to resolve cloudflare I could not find it in the issue tracker and if I missed it I apologize, I don't mean to waste anyone's time. Thank you for all your hard work!

How to reproduce: yt-dlp https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e

Output including error: [generic] 234e331d-f8bd-4935-b72d-0ec5354a652e: Downloading webpage ERROR: [generic] Unable to download webpage: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using yt-dlp -U

Provide verbose output that clearly demonstrates the problem

  • [X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • [ ] If using API, add 'verbose': True to YoutubeDL params instead
  • [X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

yt-dlp https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e -vU
[debug] Command-line config: ['https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.11.11 [8b64402] (pip)
[debug] Python 3.9.6 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2020-12-15-git-32586a42da-full_build-www.gyan.dev, ffprobe 2020-12-15-git-32586a42da-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.16.0, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1723 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2023.03.04, Current version: 2022.11.11
[debug] Downloading _update_spec from https://github.com/yt-dlp/yt-dlp/releases/download/2023.03.04/_update_spec
ERROR: You installed yt-dlp with pip or using the wheel from PyPi; Use that to update
[debug] [generic] Extracting URL: https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[generic] 234e331d-f8bd-4935-b72d-0ec5354a652e: Downloading webpage
ERROR: [generic] Unable to download webpage: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "c:\python39\lib\site-packages\yt_dlp\extractor\common.py", line 674, in extract
    ie_result = self._real_extract(url)
  File "c:\python39\lib\site-packages\yt_dlp\extractor\generic.py", line 2582, in _real_extract
    full_response = self._request_webpage(url, video_id, headers={
  File "c:\python39\lib\site-packages\yt_dlp\extractor\common.py", line 825, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "c:\python39\lib\site-packages\yt_dlp\extractor\common.py", line 807, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query))
  File "c:\python39\lib\site-packages\yt_dlp\YoutubeDL.py", line 3692, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "c:\python39\lib\urllib\request.py", line 523, in open
    response = meth(req, response)
  File "c:\python39\lib\urllib\request.py", line 632, in http_response
    response = self.parent.error(
  File "c:\python39\lib\urllib\request.py", line 561, in error
    return self._call_chain(*args)
  File "c:\python39\lib\urllib\request.py", line 494, in _call_chain
    result = func(*args)
  File "c:\python39\lib\urllib\request.py", line 641, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Cragsand avatar Apr 08 '23 11:04 Cragsand

Follow these steps: https://github.com/yt-dlp/yt-dlp/wiki/FAQ#im-getting-http-error-403-and-the-site-has-an-open-issue-on-the-tracker-thats-labeled-cloudflare-related-what-can-i-do

bashonly avatar Apr 08 '23 15:04 bashonly

Latest version: 2023.03.04, Current version: 2022.11.11
ERROR: You installed yt-dlp with pip or using the wheel from PyPi; Use that to update

The version you are using does not have the Kick extractor. Update your yt-dlp with pip and see if the problem persists. If so, post a new verbose log

Related: #6553

I'm using the windows executable, not through python.

Cragsand avatar Apr 08 '23 15:04 Cragsand

That's not what your log says. I can't do anything to help if you're not providing a log from the latest version

bashonly avatar Apr 08 '23 15:04 bashonly

That's not what your log says. I can't do anything to help if you're not providing a log from the latest version

I'm sorry but I don't know why the log says that. But I am using the windows executable. See my attached images:

bild bild

Cragsand avatar Apr 08 '23 15:04 Cragsand

I've pushed a change to the Kick extractor. Now it will continue to try to extract the video if the first request fails.

Here's what you can try:

  1. With your yt-dlp win exe, run yt-dlp --update-to nightly

  2. Try yt-dlp -v https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e

  3. If that fails, then try navigating to the site in your browser, and passing cookies from browser to yt-dlp: yt-dlp -v --cookies-from-browser chrome https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e (or replace chrome with whatever browser you visit kick.com with)

  4. If the above also fails, then find your browser's user-agent string (you can type "what is my user-agent" into duckduckgo or google), and try running: yt-dlp -v --user-agent "USER_AGENT" --cookies-from-browser chrome https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e (replace USER_AGENT with your actual user-agent string)

If successful, please reply with which worked for you (2, 3 or 4)

If you are still getting an error, please post the verbose log as text

bashonly avatar Apr 08 '23 16:04 bashonly

  1. This works.

  2. This fails.

bild

G:\YouTube-DL>yt-dlp -v https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[debug] Command-line config: ['-v', 'https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] [0a6918a4a] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2020-12-15-git-32586a42da-full_build-www.gyan.dev, ffprobe 2020-12-15-git-32586a42da-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.1
[debug] Proxy map: {}
[debug] Loaded 1791 extractors
[KickVOD] Setting up session
WARNING: [KickVOD] Unable to download webpage: HTTP Error 403: Forbidden
[debug] [KickVOD] kick.com did not set XSRF-TOKEN cookie
[KickVOD] Extracting URL: https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Downloading API JSON
ERROR: [KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 694, in extract
  File "yt_dlp\extractor\kick.py", line 110, in _real_extract
  File "yt_dlp\extractor\kick.py", line 27, in _call_api
  File "yt_dlp\extractor\common.py", line 1048, in download_content
  File "yt_dlp\extractor\common.py", line 1012, in download_handle
  File "yt_dlp\extractor\common.py", line 882, in _download_webpage_handle
  File "yt_dlp\extractor\common.py", line 839, in _request_webpage

  File "yt_dlp\extractor\common.py", line 821, in _request_webpage
  File "yt_dlp\YoutubeDL.py", line 3743, in urlopen
  File "urllib\request.py", line 531, in open
  File "urllib\request.py", line 640, in http_response
  File "urllib\request.py", line 569, in error
  File "urllib\request.py", line 502, in _call_chain
  File "urllib\request.py", line 649, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden
  1. This also fails. Log:
G:\YouTube-DL>yt-dlp -v --cookies-from-browser chrome https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[debug] Command-line config: ['-v', '--cookies-from-browser', 'chrome', 'https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] [0a6918a4a] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2020-12-15-git-32586a42da-full_build-www.gyan.dev, ffprobe 2020-12-15-git-32586a42da-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.1
[Cookies] Extracting cookies from chrome
[debug] Extracting cookies from: "C:\Users\Crag\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies"
[debug] Found local state file at "C:\Users\Crag\AppData\Local\Google\Chrome\User Data\Local State"
[Cookies] Extracted 71 cookies from chrome
[debug] cookie version breakdown: {'v10': 71, 'other': 0, 'unencrypted': 0}
[debug] Proxy map: {}
[debug] Loaded 1791 extractors
[KickVOD] Setting up session
WARNING: [KickVOD] Unable to download webpage: HTTP Error 403: Forbidden
[debug] [KickVOD] kick.com did not set XSRF-TOKEN cookie
[KickVOD] Extracting URL: https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Downloading API JSON
ERROR: [KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 694, in extract
  File "yt_dlp\extractor\kick.py", line 110, in _real_extract
  File "yt_dlp\extractor\kick.py", line 27, in _call_api
  File "yt_dlp\extractor\common.py", line 1048, in download_content
  File "yt_dlp\extractor\common.py", line 1012, in download_handle
  File "yt_dlp\extractor\common.py", line 882, in _download_webpage_handle
  File "yt_dlp\extractor\common.py", line 839, in _request_webpage

  File "yt_dlp\extractor\common.py", line 821, in _request_webpage
  File "yt_dlp\YoutubeDL.py", line 3743, in urlopen
  File "urllib\request.py", line 531, in open
  File "urllib\request.py", line 640, in http_response
  File "urllib\request.py", line 569, in error
  File "urllib\request.py", line 502, in _call_chain
  File "urllib\request.py", line 649, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden

bild

  1. This also fails. Log:
G:\YouTube-DL>yt-dlp -v --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0" --cookies-from-browser chrome https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[debug] Command-line config: ['-v', '--user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0', '--cookies-from-browser', 'chrome', 'https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] [0a6918a4a] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2020-12-15-git-32586a42da-full_build-www.gyan.dev, ffprobe 2020-12-15-git-32586a42da-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.1
[Cookies] Extracting cookies from chrome
[debug] Extracting cookies from: "C:\Users\Crag\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies"
[debug] Found local state file at "C:\Users\Crag\AppData\Local\Google\Chrome\User Data\Local State"
[Cookies] Extracted 71 cookies from chrome
[debug] cookie version breakdown: {'v10': 71, 'other': 0, 'unencrypted': 0}
[debug] Proxy map: {}
[debug] Loaded 1791 extractors
[KickVOD] Setting up session
WARNING: [KickVOD] Unable to download webpage: HTTP Error 403: Forbidden
[debug] [KickVOD] kick.com did not set XSRF-TOKEN cookie
[KickVOD] Extracting URL: https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Downloading API JSON
ERROR: [KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 694, in extract
  File "yt_dlp\extractor\kick.py", line 110, in _real_extract
  File "yt_dlp\extractor\kick.py", line 27, in _call_api
  File "yt_dlp\extractor\common.py", line 1048, in download_content
  File "yt_dlp\extractor\common.py", line 1012, in download_handle
  File "yt_dlp\extractor\common.py", line 882, in _download_webpage_handle
  File "yt_dlp\extractor\common.py", line 839, in _request_webpage

  File "yt_dlp\extractor\common.py", line 821, in _request_webpage
  File "yt_dlp\YoutubeDL.py", line 3743, in urlopen
  File "urllib\request.py", line 531, in open
  File "urllib\request.py", line 640, in http_response
  File "urllib\request.py", line 569, in error
  File "urllib\request.py", line 502, in _call_chain
  File "urllib\request.py", line 649, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden

bild

None worked unfortunately.

Cragsand avatar Apr 08 '23 16:04 Cragsand

--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0"

Are you using firefox to browse kick.com? Then use --cookies-from-browser firefox

bashonly avatar Apr 08 '23 16:04 bashonly

--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0"

Are you using firefox to browse kick.com? Then use --cookies-from-browser firefox

No luck unfortunately.

G:\YouTube-DL>yt-dlp -v --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0" --cookies-from-browser firefox https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[debug] Command-line config: ['-v', '--user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0', '--cookies-from-browser', 'firefox', 'https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] [0a6918a4a] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2020-12-15-git-32586a42da-full_build-www.gyan.dev, ffprobe 2020-12-15-git-32586a42da-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.1
[Cookies] Extracting cookies from firefox
[debug] Extracting cookies from: "C:\Users\Crag\AppData\Roaming\Mozilla\Firefox\Profiles\2h71j2pe.default-release\cookies.sqlite"
[Cookies] Extracted 136 cookies from firefox
[debug] Proxy map: {}
[debug] Loaded 1791 extractors
[KickVOD] Setting up session
WARNING: [KickVOD] Unable to download webpage: HTTP Error 403: Forbidden
[KickVOD] Extracting URL: https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e
[KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Downloading API JSON
ERROR: [KickVOD] 234e331d-f8bd-4935-b72d-0ec5354a652e: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "yt_dlp\extractor\common.py", line 694, in extract
  File "yt_dlp\extractor\kick.py", line 110, in _real_extract
  File "yt_dlp\extractor\kick.py", line 27, in _call_api
  File "yt_dlp\extractor\common.py", line 1048, in download_content
  File "yt_dlp\extractor\common.py", line 1012, in download_handle
  File "yt_dlp\extractor\common.py", line 882, in _download_webpage_handle
  File "yt_dlp\extractor\common.py", line 839, in _request_webpage

  File "yt_dlp\extractor\common.py", line 821, in _request_webpage
  File "yt_dlp\YoutubeDL.py", line 3743, in urlopen
  File "urllib\request.py", line 531, in open
  File "urllib\request.py", line 640, in http_response
  File "urllib\request.py", line 569, in error
  File "urllib\request.py", line 502, in _call_chain
  File "urllib\request.py", line 649, in http_error_default
urllib.error.HTTPError: HTTP Error 403: Forbidden

bild

Cragsand avatar Apr 08 '23 17:04 Cragsand

While I still can't reproduce the 403 error myself, I am pretty sure that the problem here is cloudflare fingerprinting.

I can get a 403 if I send a curl request to https://kick.com/ with the default curl user-agent:

$ curl -f "https://kick.com/"
curl: (22) The requested URL returned error: 403

$ curl --head "https://kick.com/"
HTTP/2 403 
date: Sat, 08 Apr 2023 17:11:04 GMT
content-type: text/html
cross-origin-embedder-policy: require-corp
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
permissions-policy: accelerometer=(),autoplay=(),camera=(),clipboard-read=(),clipboard-write=(),fullscreen=(),geolocation=(),gyroscope=(),hid=(),interest-cohort=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=()
referrer-policy: same-origin
x-frame-options: SAMEORIGIN
cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
expires: Thu, 01 Jan 1970 00:00:01 GMT
set-cookie: __cf_bm=Gb_aJJrlyi0gy.V5MYZdgB.uUfrEGSwU.Bt4SuTO0qI-1680973864-0-AQUOPrPVbPLGX+T9ne10ZNgmZIOtelh7HWAdHzoCIVPPSrGSGPhJqVowxxmCI8/XLaFrH4sb25CXC9G9HmJPzMI=; path=/; expires=Sat, 08-Apr-23 17:41:04 GMT; domain=.kick.com; HttpOnly; Secure; SameSite=None
server: cloudflare
cf-ray: 7b4c209d8c5d230f-ORD
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

...and the body of the response is a captcha challenge page.

crunchyroll implements this same type of fingerprinting, and the steps I had you try were taken from the workaround I discovered when experimenting with the CR extractor back when it was broken: https://github.com/yt-dlp/yt-dlp/pull/5294#issuecomment-1289735453 (note the same __cf_bm cloudflare cookie being set)

Crunchyroll only shields their API with cloudflare; you can still request the front page of CR and the site will set the cookies necessary to bypass the fingerprinting and access the API with yt-dlp. I tried to do something similar with the Kick extractor, but the difference/problem is that the front page of Kick is shielded by cloudflare, too.

I'm guessing only certain IP ranges are having their requests screened, which is why some users are affected by this issue and some are not. Not sure about that, though.

Unfortunately, I don't think there is anything we can do as of right now. With yt-dlp's current capabilities, CF fingerprinting is a problem without a solution

bashonly avatar Apr 08 '23 17:04 bashonly

Does yt-dlp -v --user-agent "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://kick.com/video/234e331d-f8bd-4935-b72d-0ec5354a652e work?

(I spent 10 minutes scrolling through the Discord history to find this :trollface:)

gamer191 avatar Apr 09 '23 03:04 gamer191

using yt-dlp to download from kick.com fails (403) for me when using a vpn, succeeds when using home IP. web browser displays kick.com video through vpn.

some sort of fingerprinting issue.

Kick being new can afford to utilize javascript hacks to identify legit users (on low trust IPs), youtube and twitch have apps on myriad of hardware all using the same(?) API for efficiency, any such measures would end up with a lot of upset users.

ghost avatar Apr 09 '23 16:04 ghost

@jackloomen I highly doubt this will work, but what happens if you use --geo-bypass-country XX, where XX is your home country's two letter code?

youtube and twitch have apps on myriad of hardware all using the same(?) API for efficiency, any such measures would end up with a lot of upset users

Youtube use different APIs on different devices. Unfortunately for them, we just need one obscure API to work with yt-dlp :trollface:

gamer191 avatar Apr 10 '23 04:04 gamer191

I highly doubt this will work, but what happens if you use --geo-bypass-country XX, where XX is your home country's two letter code?

Nothing happened, also i tried 3 different vpn end point in 3 different countries to the same effect of 403. they are probably discriminating against some or all vpn providers, or single out datacenters.

ghost avatar Apr 10 '23 04:04 ghost

I'd be curious whether they're detecting VPNs, or just only 403ing some countries. What happens if you use a VPN based in your home country?

gamer191 avatar Apr 10 '23 04:04 gamer191

I'd be curious whether they're detecting VPNs, or just only 403ing some countries. What happens if you use a VPN based in your home country?

one of the three countries I tested was my country, the other was US and germany.

ghost avatar Apr 10 '23 05:04 ghost

I'm not using a VPN but I'm situated in Sweden. Appreciate all ideas here but no clue how to work around Cloudflare fingerprinting if that's the problem.

Cragsand avatar Apr 10 '23 11:04 Cragsand

does --legacy-server-connect help with this issue?

bashonly avatar Apr 14 '23 21:04 bashonly

does --legacy-server-connect help with this issue?

this appears to fix the issue. just re-verified that the regular approach results in 403, adding --legacy-server-connect results in successful download.

ghost avatar Apr 14 '23 22:04 ghost

Website works but yt-dlp gets 403'd with the latest nightly.

However, you can still download the VOD by getting the master m3u8 and plugging that into yt-dlp as described in this video guide.

https://streamable.com/xbel1y

Pentaphon avatar Apr 16 '23 21:04 Pentaphon

I was using yt-dlp to get the HLS url to pass it to my ffmpeg based video player. It was working last week. I tried today with a today git yt-dlp and I get the dreaded 403.

sylware avatar Apr 19 '23 16:04 sylware

workaround for now is to add --legacy-server-connect to your command

bashonly avatar Apr 19 '23 16:04 bashonly

workaround for now is to add --legacy-server-connect to your command

Holy heck, thank you so much! This works

EDIT: Suddenly this stopped working as well. Hmmm darn it. 403 Errors again.

Cragsand avatar Apr 25 '23 12:04 Cragsand

Would it be possible to set up some sort of streaming extractor for the m3u8 URLs from a real browser extension to yt-dlp? I noticed an app I tried for streaming ipad browser video to apple tv, called "Web Video Cast" does work for kick.com. I am guessing this is because the website does run in a proper browser on the ipad, so it can run all of the cloudflare crap and its able to maintain this connection

SquaredHelix avatar Apr 26 '23 20:04 SquaredHelix

--legacy-server-connect unfortunately stopped working.

root-reindeer-flotilla avatar Apr 29 '23 19:04 root-reindeer-flotilla

--legacy-server-connect unfortunately stopped working.

still works for me, your ip[|range] may be blacklisted.

ghost avatar Apr 30 '23 05:04 ghost

still works for me, your ip[|range] may be blacklisted.

Well that's weird. I can still watch normally on the website.

root-reindeer-flotilla avatar Apr 30 '23 12:04 root-reindeer-flotilla

Using the master.m3u8 link instead of the public URL still works perfectly for me as shown in this video.

No --legacy-server-connect needed at all.

https://streamable.com/xbel1y

Pentaphon avatar May 02 '23 07:05 Pentaphon

Website works but yt-dlp gets 403'd with the latest nightly.

However, you can still download the VOD by getting the master m3u8 and plugging that into yt-dlp as described in this video guide.

https://streamable.com/xbel1y

Working method, 100% recommend. Thanks

erema84 avatar May 04 '23 06:05 erema84

still works for me, your ip[|range] may be blacklisted.

Nobody is getting IP blacklisted. They're just not using the master.m3u8 link from the public-facing link.

Pentaphon avatar May 04 '23 06:05 Pentaphon

Well that's weird. I can still watch normally on the website.

Out of interest, did you have to go through one of these annoying screens? They block yt-dlp :( Checking if the site connection is secure

No --legacy-server-connect needed at all.

--legacy-server-connect is easier imo

Nobody is getting IP blacklisted. They're just not using the master.m3u8 link from the public-facing link.

Just because it can be bypassed doesn't mean people aren't getting IP blacklisted

gamer191 avatar May 05 '23 11:05 gamer191