yt-dlp: [tik-tok] ERROR: [generic] Unable to download webpage: The read operation timed out

Checklist

  • I’m reporting a bug unrelated to a specific site
  • I’ve verified that I’m running yt-dlp version 2021.12.27. (update instructions)
  • I’ve checked that all provided URLs are alive and playable in a browser
  • I’ve checked that all URLs and arguments with special characters are properly quoted or escaped
  • I’ve searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
  • I’ve read the guidelines for opening an issue

Description

Cant download tik-tok video: WARNING: [generic] Could not send HEAD request ERROR: [generic] Unable to download webpage: The read operation timed out (caused by timeout(‘The read operation timed out’,)). ytdl-patched version 2022.01.19.114514 doesn’t work also.

Verbose log

yt-dlp -Uv -o ./abc.mp4 https://vm.tiktok.com/ZSe4FqkKd
[debug] Command-line config: ['-Uv', '-o', './abc.mp4', 'https://vm.tiktok.com/ZSe4FqkKd']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, err UTF-8, pref UTF-8
[debug] yt-dlp version 2021.12.27 [6223f67a8] (zip)
[debug] Python version 3.6.9 (CPython 64bit) - Linux-4.15.0-156-generic-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.8, ffprobe 3.4.8
[debug] Optional libraries: Crypto, secretstorage, sqlite
[debug] Proxy map: {}
Latest version: 2021.12.27, Current version: 2021.12.27
yt-dlp is up to date (2021.12.27)
[debug] [generic] Extracting URL: https://vm.tiktok.com/ZSe4FqkKd
[generic] ZSe4FqkKd: Requesting header
WARNING: [generic] Could not send HEAD request to https://vm.tiktok.com/ZSe4FqkKd: The read operation timed out
[generic] ZSe4FqkKd: Downloading webpage
ERROR: [generic] Unable to download webpage: The read operation timed out (caused by timeout('The read operation timed out',)); please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output. (caused by timeout('The read operation timed out',)); please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 717, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3458, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 564, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 756, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 564, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 756, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 526, in open
    response = self._open(req, data)
  File "/usr/lib/python3.6/urllib/request.py", line 544, in _open
    '_open', req)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/local/bin/yt-dlp/yt_dlp/utils.py", line 1394, in https_open
    req, **kwargs)
  File "/usr/lib/python3.6/urllib/request.py", line 1328, in do_open
    r = h.getresponse()
  File "/usr/lib/python3.6/http/client.py", line 1377, in getresponse
    response.begin()
  File "/usr/lib/python3.6/http/client.py", line 320, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.6/http/client.py", line 281, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.6/socket.py", line 586, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.6/ssl.py", line 1012, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.6/ssl.py", line 874, in read
    return self._sslobj.read(len, buffer)
  File "/usr/lib/python3.6/ssl.py", line 631, in read
    v = self._sslobj.read(len, buffer)

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 9
  • Comments: 24 (7 by maintainers)

Commits related to this issue

Most upvoted comments

Seems to be a regression, I cannot reproduce on release (2021.12.27) Using --user-agent facebookexternalhit/1.1 works as a workaround

For anyone having issues spoofing the user-agent in embedded yt-dlp, setting the standard header before requesting the urls works for me:

import yt_dlp.utils
yt_dlp.utils.std_headers['User-Agent'] = 'facebookexternalhit/1.1'

@pukkandan I seem to be still getting the exact same error after force reinstalling from master branch. Any ideas? I’m assuming that commit is supposed to fix it

Oke. The issue seems to be that yt_dlp uses HTTP 1.1, which TikTok rejects for certain headers. (e.g. the default one which simulates the Chrome header). Using HTTP 2 instead fixes the issue (when using cURL). See following script:

#!/bin/bash

# Usage: ./download [URL]
# returns works or failed depending on whether the correct file was retrieved

# chrome user agent - only works with http2
USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
# whatever - works with 1.1 & 2
#USER_AGENT="facebookexternalhit/1.1"
# firefox linux user agent - works with 1.1 & 2
#USER_AGENT="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"

HTTP_VERSION="1.1"  # also try 1.1 and 2

# these are copied directly from the yt_dlp print traffic parameter
ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
ACCEPT_ENCODING="gzip, deflate"
ACCEPT_LANGUAGE="en-us,en;q=0.5"
SEC_FETCH="navigate"
CONNECTION="close"

MAX_TIMEOUT_S="2"  # otherwise it get's boring
URL=$([[ -n "$1" ]] && echo "$1" || echo "https://vm.tiktok.com/ZSe4FqkKd")

rm out.html

curl -v -o out.html -L --compressed "$URL" \
  --http$HTTP_VERSION --max-time $MAX_TIMEOUT_S \
  -H "User-Agent: $USER_AGENT" \
  -H "Accept: $ACCEPT" \
  -H "Accept-Encoding: $ACCEPT_ENCODING" \
  -H "Accept-Language: $ACCEPT_LANGUAGE" \
  -H "Sec-Fetch-Mode: $SEC_FETCH" \
  -H "Connection: $CONNECTION" \

grep 'aweme/detail' out.html >/dev/null 2>&1 && echo "=== Works $URL" || echo "=== Failed $URL"

Well it is one way, but when handling multiple requests at once using multiple YoutubeDL instances in an multithreaded embedded environment makes the global setting not the best way to go forward.

When using YoutubeDL.extract_info one can provide an extra_info dictionary which is used to handle the download request. One of the parameters that can be provided with that is http_headers. I use it explicitly to provide a Referer header to the video download. Sadly this additional dict is only important when it comes to downloading the actual video file, not for getting the redirections chain.

Something to initialize the YoutubeDL class that would allow one to configure the headers used further on would be nice as global std_headers isn’t always possible to use.

I think it may have something to do with HTTP/2. I tried requests (allow_redirects=False) and urllib.request.urlopen on the HTML page, but they both return a 200 status code, instead of a 301 redirect.

I tried with the httpx library, and it properly returns a 301 status code, and from there I can then get the next location (the www.tiktok.com location) from the location header of the request. Or, I can just pass the vm.tiktok.com link to httpx.get(url, follow_redirects=True) and get the www.tiktok.com link that way.

@pukkandan Seems to be an issue with the redirect. https://vm.tiktok.com/TTPdr42PwF/ doesn’t work, but https://www.tiktok.com/@jangyhayden/video/7055075515409059119 works fine.

It also seems that https://vm.tiktok.com/TTPdr42PwF/ redirects to https://m.tiktok.com/v/7055075515409059119.html, which yt_dlp doesn’t work on either.

My bad. Was testing the patched one. Here’s new log;

python3.8 -m yt_dlp -s -v --print-traffic https://vm.tiktok.com/TTPdr42PwF/
[debug] Command-line config: ['-s', '-v', '--print-traffic', 'https://vm.tiktok.com/TTPdr42PwF/']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2022.01.21 [f20d607b0] (source)
[debug] Python version 3.8.12 (CPython 64bit) - Linux-4.15.0-166-generic-x86_64-with-glibc2.27
[debug] exe versions: ffmpeg 3.4.8, ffprobe 3.4.8
[debug] Optional libraries: Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
[debug] [generic] Extracting URL: https://vm.tiktok.com/TTPdr42PwF/
[generic] TTPdr42PwF: Requesting header
send: b'HEAD /TTPdr42PwF/ HTTP/1.1\r\nHost: vm.tiktok.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 301 Moved Permanently\r\n'
header: Server: nginx
header: Content-Type: text/html; charset=utf-8
header: Location: https://m.tiktok.com/v/7055075515409059119.html?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy
header: X-Tt-Logid: 2022012121373301022308602106659CA1
header: Server-Timing: inner; dur=4
header: x-tt-trace-host: 019efc2e596bca65998f8d0a175db4496e665f8b601870b2505c635f7e58f95cf9ed119c8dea9530c37250c54020f841940c11efcdb9dc6ee6310bf3212acba53869a90d06660449cfdb38772061b4adc507152ee6e587748a654545678c36c425
header: Date: Fri, 21 Jan 2022 21:37:33 GMT
header: X-Cache: TCP_MISS from a184-150-154-76.deploy.akamaitechnologies.com (AkamaiGHost/10.7.0-38611996) (-)
header: Connection: close
header: X-Origin-Response-Time: 21,184.150.154.76
header: x-tt-trace-tag: id=16;cdn-cache=miss;type=dyn
header: Server-Timing: cdn-cache; desc=MISS, edge; dur=2, origin; dur=21
header: X-Akamai-Request-ID: 24a8ac6
send: b'GET /v/7055075515409059119.html?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy HTTP/1.1\r\nHost: m.tiktok.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 301 Moved Permanently\r\n'
header: Server: nginx
header: Content-Type: text/html; charset=utf-8
header: Content-Length: 1405
header: X-Tt-Logid: 202201212137330102230730270B66146C
header: Strict-Transport-Security: max-age=31536000
header: X-Ua-Compatible: IE=edge,chrome=1
header: Location: https://www.tiktok.com/@jangyhayden/video/7055075515409059119?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy&_r=1
header: X-Xss-Protection: 1; mode=block
header: X-Frame-Options: SAMEORIGIN
header: X-Content-Type-Options: nosniff
header: X-Download-Options: noopen
header: x-ms-token: 1aV9GRq8EGbHUYqtsMHuEYStvTYw8yNUs0BHq9u59q5RQl27wlSb9d1qUAKUgPNaFZ1hTyseYB_Uj--bJvYssGHjogyftpnLhOAtcnuUjBSDfalZMAMovk0=
header: Server-Timing: inner; dur=250
header: x-tt-trace-host: 019efc2e596bca65998f8d0a175db4496e665f8b601870b2505c635f7e58f95cf9ed119c8dea9530c37250c54020f8419453fe19cb7aec1529da2752a2726e675bf63e3799d6c89cad31f9f66472c27bb65886352f4c5025e9cccefd2c5a33c1a8
header: Date: Fri, 21 Jan 2022 21:37:33 GMT
header: Connection: close
header: Set-Cookie: tt_csrf_token=b754SxqcvoVe744THf0ky-X3; path=/; domain=.tiktok.com; samesite=lax; secure; httponly
header: Set-Cookie: ttwid=1%7CwK9kgyvIzxncmGNQppvBcIBjNRUk_bV-3QbFcjVyVTQ%7C1642801053%7C75a724658adcbe8c3d890decb0201be217ca439a29c5f3260577a90228e775c2; Domain=.tiktok.com; Path=/; Expires=Sat, 21 Jan 2023 21:37:33 GMT; HttpOnly
header: Set-Cookie: msToken=1aV9GRq8EGbHUYqtsMHuEYStvTYw8yNUs0BHq9u59q5RQl27wlSb9d1qUAKUgPNaFZ1hTyseYB_Uj--bJvYssGHjogyftpnLhOAtcnuUjBSDfalZMAMovk0=; Path=/; Domain=tiktok.com; Expires=Mon, 31 Jan 2022 21:37:33 GMT; Secure; SameSite=None
header: x-tt-trace-tag: id=16;cdn-cache=miss;type=dyn
header: Server-Timing: cdn-cache; desc=MISS, edge; dur=1, origin; dur=280
header: X-Origin-Response-Time: 280,184.150.154.76
header: Set-Cookie: _abck=B60DD1C19415134E9F4D74FB6909C260~-1~YAAQTJqWuBDHinx+AQAAqMCSfgdfmDsRp+Ul9k14858P7MUCrBek007kA1ApzwRTT5xvSMNFZ01aQos/a/dwTGfCM2JTifZ5TTe+6VS4TO89Yd0MblqCdA+G5RhKqPdUcNlUmS0QbS7gqHmrXhlFd3Jnobt8bSx92OlcXGMsOnpWoZtBOVppR6n/Z0t8oVWHmty7PQuKCZ2uZNQ6qG25QjM31k9J75E10FyCFgRid9Nxji2edKzb+cRSjw7TZKgv/xN85McHfb8W5WKw+KkeIJ480Na6zjrNWgtucmcAajDL3fa9nppcmShCukANaw1zIs3lF5Uh8f/ETuPmZ46sg/CcRcRTkZx9vqLXhwTZa60jYJ06V95maQzhVAY=~-1~-1~-1; Domain=.tiktok.com; Path=/; Expires=Sat, 21 Jan 2023 21:37:33 GMT; Max-Age=31536000; Secure
header: Set-Cookie: bm_sz=42699F274CB383283343536F588D9422~YAAQTJqWuBHHinx+AQAAqMCSfg4GCl56PS07KGero3RemAqDqTqov+oOBGBB62/ir34BeXIhB14Ldhdsb1CwKc7KA8xJYaUUJTxNbf7no4xEbfyC79B7AsWQb7l0bKkYHl2PH3eAU3dQgvGcSBoJ1K7PMPLWT9Vuc8ZzYLV1Gh+q9ap3QiCp8I+Gg6j37dDpNM+i30aws6Hi4u/lmGtGcIgYy5OS8QRG8QcwfeAGKOFK10R7CSIEuLUPfHkp5WKZWCYWESddB2a/l6dhoY3vgODjptv+4KCJIc3CMgYDSfIfBpk=~3556662~3359042; Domain=.tiktok.com; Path=/; Expires=Sat, 22 Jan 2022 01:37:33 GMT; Max-Age=14400
send: b'GET /@jangyhayden/video/7055075515409059119?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy&_r=1 HTTP/1.1\r\nHost: www.tiktok.com\r\nCookie: tt_csrf_token=b754SxqcvoVe744THf0ky-X3; ttwid=1%7CwK9kgyvIzxncmGNQppvBcIBjNRUk_bV-3QbFcjVyVTQ%7C1642801053%7C75a724658adcbe8c3d890decb0201be217ca439a29c5f3260577a90228e775c2; msToken=1aV9GRq8EGbHUYqtsMHuEYStvTYw8yNUs0BHq9u59q5RQl27wlSb9d1qUAKUgPNaFZ1hTyseYB_Uj--bJvYssGHjogyftpnLhOAtcnuUjBSDfalZMAMovk0=; _abck=B60DD1C19415134E9F4D74FB6909C260~-1~YAAQTJqWuBDHinx+AQAAqMCSfgdfmDsRp+Ul9k14858P7MUCrBek007kA1ApzwRTT5xvSMNFZ01aQos/a/dwTGfCM2JTifZ5TTe+6VS4TO89Yd0MblqCdA+G5RhKqPdUcNlUmS0QbS7gqHmrXhlFd3Jnobt8bSx92OlcXGMsOnpWoZtBOVppR6n/Z0t8oVWHmty7PQuKCZ2uZNQ6qG25QjM31k9J75E10FyCFgRid9Nxji2edKzb+cRSjw7TZKgv/xN85McHfb8W5WKw+KkeIJ480Na6zjrNWgtucmcAajDL3fa9nppcmShCukANaw1zIs3lF5Uh8f/ETuPmZ46sg/CcRcRTkZx9vqLXhwTZa60jYJ06V95maQzhVAY=~-1~-1~-1; bm_sz=42699F274CB383283343536F588D9422~YAAQTJqWuBHHinx+AQAAqMCSfg4GCl56PS07KGero3RemAqDqTqov+oOBGBB62/ir34BeXIhB14Ldhdsb1CwKc7KA8xJYaUUJTxNbf7no4xEbfyC79B7AsWQb7l0bKkYHl2PH3eAU3dQgvGcSBoJ1K7PMPLWT9Vuc8ZzYLV1Gh+q9ap3QiCp8I+Gg6j37dDpNM+i30aws6Hi4u/lmGtGcIgYy5OS8QRG8QcwfeAGKOFK10R7CSIEuLUPfHkp5WKZWCYWESddB2a/l6dhoY3vgODjptv+4KCJIc3CMgYDSfIfBpk=~3556662~3359042\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nConnection: close\r\n\r\n'
WARNING: [generic] Could not send HEAD request to https://vm.tiktok.com/TTPdr42PwF/: The read operation timed out
[generic] TTPdr42PwF: Downloading webpage
send: b'GET /TTPdr42PwF/ HTTP/1.1\r\nHost: vm.tiktok.com\r\nCookie: tt_csrf_token=b754SxqcvoVe744THf0ky-X3; ttwid=1%7CwK9kgyvIzxncmGNQppvBcIBjNRUk_bV-3QbFcjVyVTQ%7C1642801053%7C75a724658adcbe8c3d890decb0201be217ca439a29c5f3260577a90228e775c2; msToken=1aV9GRq8EGbHUYqtsMHuEYStvTYw8yNUs0BHq9u59q5RQl27wlSb9d1qUAKUgPNaFZ1hTyseYB_Uj--bJvYssGHjogyftpnLhOAtcnuUjBSDfalZMAMovk0=; _abck=B60DD1C19415134E9F4D74FB6909C260~-1~YAAQTJqWuBDHinx+AQAAqMCSfgdfmDsRp+Ul9k14858P7MUCrBek007kA1ApzwRTT5xvSMNFZ01aQos/a/dwTGfCM2JTifZ5TTe+6VS4TO89Yd0MblqCdA+G5RhKqPdUcNlUmS0QbS7gqHmrXhlFd3Jnobt8bSx92OlcXGMsOnpWoZtBOVppR6n/Z0t8oVWHmty7PQuKCZ2uZNQ6qG25QjM31k9J75E10FyCFgRid9Nxji2edKzb+cRSjw7TZKgv/xN85McHfb8W5WKw+KkeIJ480Na6zjrNWgtucmcAajDL3fa9nppcmShCukANaw1zIs3lF5Uh8f/ETuPmZ46sg/CcRcRTkZx9vqLXhwTZa60jYJ06V95maQzhVAY=~-1~-1~-1; bm_sz=42699F274CB383283343536F588D9422~YAAQTJqWuBHHinx+AQAAqMCSfg4GCl56PS07KGero3RemAqDqTqov+oOBGBB62/ir34BeXIhB14Ldhdsb1CwKc7KA8xJYaUUJTxNbf7no4xEbfyC79B7AsWQb7l0bKkYHl2PH3eAU3dQgvGcSBoJ1K7PMPLWT9Vuc8ZzYLV1Gh+q9ap3QiCp8I+Gg6j37dDpNM+i30aws6Hi4u/lmGtGcIgYy5OS8QRG8QcwfeAGKOFK10R7CSIEuLUPfHkp5WKZWCYWESddB2a/l6dhoY3vgODjptv+4KCJIc3CMgYDSfIfBpk=~3556662~3359042\r\nAccept-Encoding: *\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 301 Moved Permanently\r\n'
header: Server: nginx
header: Content-Type: text/html; charset=utf-8
header: Content-Length: 699
header: Location: https://m.tiktok.com/v/7055075515409059119.html?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy
header: X-Tt-Logid: 202201212137540102230160480F647AE6
header: Server-Timing: inner; dur=4
header: x-tt-trace-host: 019efc2e596bca65998f8d0a175db4496e6d70d26e2cf80fd66e79fa7acd85aba948ac6800480ba9b7b848b1b5679053b2a05569fee7760707bfe0ea674a3cbc947fb903d204e9ea4cbed77714f121166739749db4aabc70c00dac0c815ec1d804
header: Date: Fri, 21 Jan 2022 21:37:54 GMT
header: X-Cache: TCP_MISS from a184-150-154-101.deploy.akamaitechnologies.com (AkamaiGHost/10.7.0-38611996) (-)
header: Connection: close
header: X-Origin-Response-Time: 20,184.150.154.101
header: x-tt-trace-tag: id=16;cdn-cache=miss;type=dyn
header: Server-Timing: cdn-cache; desc=MISS, edge; dur=0, origin; dur=20
header: X-Akamai-Request-ID: 464bf5d
send: b'GET /v/7055075515409059119.html?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy HTTP/1.1\r\nHost: m.tiktok.com\r\nCookie: tt_csrf_token=b754SxqcvoVe744THf0ky-X3; ttwid=1%7CwK9kgyvIzxncmGNQppvBcIBjNRUk_bV-3QbFcjVyVTQ%7C1642801053%7C75a724658adcbe8c3d890decb0201be217ca439a29c5f3260577a90228e775c2; msToken=1aV9GRq8EGbHUYqtsMHuEYStvTYw8yNUs0BHq9u59q5RQl27wlSb9d1qUAKUgPNaFZ1hTyseYB_Uj--bJvYssGHjogyftpnLhOAtcnuUjBSDfalZMAMovk0=; _abck=B60DD1C19415134E9F4D74FB6909C260~-1~YAAQTJqWuBDHinx+AQAAqMCSfgdfmDsRp+Ul9k14858P7MUCrBek007kA1ApzwRTT5xvSMNFZ01aQos/a/dwTGfCM2JTifZ5TTe+6VS4TO89Yd0MblqCdA+G5RhKqPdUcNlUmS0QbS7gqHmrXhlFd3Jnobt8bSx92OlcXGMsOnpWoZtBOVppR6n/Z0t8oVWHmty7PQuKCZ2uZNQ6qG25QjM31k9J75E10FyCFgRid9Nxji2edKzb+cRSjw7TZKgv/xN85McHfb8W5WKw+KkeIJ480Na6zjrNWgtucmcAajDL3fa9nppcmShCukANaw1zIs3lF5Uh8f/ETuPmZ46sg/CcRcRTkZx9vqLXhwTZa60jYJ06V95maQzhVAY=~-1~-1~-1; bm_sz=42699F274CB383283343536F588D9422~YAAQTJqWuBHHinx+AQAAqMCSfg4GCl56PS07KGero3RemAqDqTqov+oOBGBB62/ir34BeXIhB14Ldhdsb1CwKc7KA8xJYaUUJTxNbf7no4xEbfyC79B7AsWQb7l0bKkYHl2PH3eAU3dQgvGcSBoJ1K7PMPLWT9Vuc8ZzYLV1Gh+q9ap3QiCp8I+Gg6j37dDpNM+i30aws6Hi4u/lmGtGcIgYy5OS8QRG8QcwfeAGKOFK10R7CSIEuLUPfHkp5WKZWCYWESddB2a/l6dhoY3vgODjptv+4KCJIc3CMgYDSfIfBpk=~3556662~3359042\r\nAccept-Encoding: *\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 301 Moved Permanently\r\n'
header: Server: nginx
header: Content-Type: text/html; charset=utf-8
header: Content-Length: 1405
header: X-Tt-Logid: 202201212137540102230720251A66BFE9
header: Strict-Transport-Security: max-age=31536000
header: X-Ua-Compatible: IE=edge,chrome=1
header: Location: https://www.tiktok.com/@jangyhayden/video/7055075515409059119?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy&_r=1
header: X-Xss-Protection: 1; mode=block
header: X-Frame-Options: SAMEORIGIN
header: X-Content-Type-Options: nosniff
header: X-Download-Options: noopen
header: x-ms-token: LTnL5RZMsP-ZIGD6klUHIl6sFSliPRxmXUvdRFqeAFzwIWKuApJTYB_JR3qd1Wx7AyRSTIIi7ZNQpSFtEYuGucQREnfaETl-7V6eBEtdBe2XUhopxksZcdFv
header: Server-Timing: inner; dur=99
header: x-tt-trace-host: 019efc2e596bca65998f8d0a175db4496eab587a53b314bf23baad942b89341d1be23fb4443b73f494951a80a2e5141f3d92cea1a33766b7f39b6d9e0a97b398c63b74222c3400ce469d787bce7d8c5aaa006c8695e0f3754e4450ebb07d5d3e3d
header: Date: Fri, 21 Jan 2022 21:37:54 GMT
header: Connection: close
header: Set-Cookie: msToken=LTnL5RZMsP-ZIGD6klUHIl6sFSliPRxmXUvdRFqeAFzwIWKuApJTYB_JR3qd1Wx7AyRSTIIi7ZNQpSFtEYuGucQREnfaETl-7V6eBEtdBe2XUhopxksZcdFv; Path=/; Domain=tiktok.com; Expires=Mon, 31 Jan 2022 21:37:54 GMT; Secure; SameSite=None
header: x-tt-trace-tag: id=16;cdn-cache=miss;type=dyn
header: Server-Timing: cdn-cache; desc=MISS, edge; dur=2, origin; dur=114
header: X-Origin-Response-Time: 115,184.150.154.69
send: b'GET /@jangyhayden/video/7055075515409059119?_d=secCgYIASAHKAESPgo8GymzrAvYO4TVriZhHY5ffDrLzbj0uMaNsJsDnfX0n5uivTRbhC0oSIfiv4Aoo8sGMbeZnaauK%2Fz9%2Bw20GgA%3D&checksum=6edf2d1c0685be3a85cb30ce0f3402f96d84fc893d45beb03a29fc8f184c2aca&language=en&preview_pb=0&sec_user_id=MS4wLjABAAAAqbfUmUyEHXeJ1kpXDaXaPs_063QymqMSpfYEez5bd4XnHgH7i3o_O4ObpwfyXoz6&share_app_id=1233&share_item_id=7055075515409059119&share_link_id=5ADF2093-62FF-42D9-ABA2-29203F0C2F3A&source=h5_m&timestamp=1642657460&tt_from=copy&u_code=d2il0a8984f7dj&user_id=6614323298149629957&utm_campaign=client_share&utm_medium=ios&utm_source=copy&_r=1 HTTP/1.1\r\nHost: www.tiktok.com\r\nCookie: tt_csrf_token=b754SxqcvoVe744THf0ky-X3; ttwid=1%7CwK9kgyvIzxncmGNQppvBcIBjNRUk_bV-3QbFcjVyVTQ%7C1642801053%7C75a724658adcbe8c3d890decb0201be217ca439a29c5f3260577a90228e775c2; msToken=LTnL5RZMsP-ZIGD6klUHIl6sFSliPRxmXUvdRFqeAFzwIWKuApJTYB_JR3qd1Wx7AyRSTIIi7ZNQpSFtEYuGucQREnfaETl-7V6eBEtdBe2XUhopxksZcdFv; _abck=B60DD1C19415134E9F4D74FB6909C260~-1~YAAQTJqWuBDHinx+AQAAqMCSfgdfmDsRp+Ul9k14858P7MUCrBek007kA1ApzwRTT5xvSMNFZ01aQos/a/dwTGfCM2JTifZ5TTe+6VS4TO89Yd0MblqCdA+G5RhKqPdUcNlUmS0QbS7gqHmrXhlFd3Jnobt8bSx92OlcXGMsOnpWoZtBOVppR6n/Z0t8oVWHmty7PQuKCZ2uZNQ6qG25QjM31k9J75E10FyCFgRid9Nxji2edKzb+cRSjw7TZKgv/xN85McHfb8W5WKw+KkeIJ480Na6zjrNWgtucmcAajDL3fa9nppcmShCukANaw1zIs3lF5Uh8f/ETuPmZ46sg/CcRcRTkZx9vqLXhwTZa60jYJ06V95maQzhVAY=~-1~-1~-1; bm_sz=42699F274CB383283343536F588D9422~YAAQTJqWuBHHinx+AQAAqMCSfg4GCl56PS07KGero3RemAqDqTqov+oOBGBB62/ir34BeXIhB14Ldhdsb1CwKc7KA8xJYaUUJTxNbf7no4xEbfyC79B7AsWQb7l0bKkYHl2PH3eAU3dQgvGcSBoJ1K7PMPLWT9Vuc8ZzYLV1Gh+q9ap3QiCp8I+Gg6j37dDpNM+i30aws6Hi4u/lmGtGcIgYy5OS8QRG8QcwfeAGKOFK10R7CSIEuLUPfHkp5WKZWCYWESddB2a/l6dhoY3vgODjptv+4KCJIc3CMgYDSfIfBpk=~3556662~3359042\r\nAccept-Encoding: *\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nSec-Fetch-Mode: navigate\r\nConnection: close\r\n\r\n'
ERROR: [generic] Unable to download webpage: The read operation timed out (caused by timeout('The read operation timed out')); please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; see  https://github.com/yt-dlp/yt-dlp  on how to update. Be sure to call yt-dlp with the --verbose flag and include its complete output. (caused by timeout('The read operation timed out')); please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; see  https://github.com/yt-dlp/yt-dlp  on how to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "/usr/local/lib/python3.8/dist-packages/yt_dlp/extractor/common.py", line 730, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/lib/python3.8/dist-packages/yt_dlp/YoutubeDL.py", line 3526, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 563, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 755, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 563, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 755, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/usr/lib/python3.8/urllib/request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python3.8/dist-packages/yt_dlp/utils.py", line 1506, in https_open
    return self.do_open(functools.partial(
  File "/usr/lib/python3.8/urllib/request.py", line 1358, in do_open
    r = h.getresponse()
  File "/usr/lib/python3.8/http/client.py", line 1348, in getresponse
    response.begin()
  File "/usr/lib/python3.8/http/client.py", line 316, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.8/http/client.py", line 277, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.8/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.8/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)