[GH-ISSUE #855] UnicodeError when headers contain unicode #522

Closed
opened 2026-02-27 23:01:15 +03:00 by kerem · 0 comments
Owner

Originally created by @mokurin000 on GitHub (Jan 24, 2026).
Original GitHub issue: https://github.com/sigma67/ytmusicapi/issues/855

  • I confirm that I have read the FAQ

Describe the bug

I just find the __Secure-3PSID= in Cookies may contains Unicode, and since ytmusicapi does not process URLEncode for cookies, it may finally result:

  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\ytmusicapi\mixins\watch.py", line 141, in get_watch_playlist   
    response = self._send_request(endpoint, body)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\ytmusicapi\ytmusic.py", line 231, in _send_request
    response = self._session.post(
               ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\sessions.py", line 637, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\adapters.py", line 644, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
    response = self._make_request(
               ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connectionpool.py", line 493, in _make_request
    conn.request(
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connection.py", line 499, in request
    self.putheader(header, value)
  File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connection.py", line 413, in putheader
    super().putheader(header, *values)
  File "C:\Users\moku\AppData\Roaming\uv\python\cpython-3.12.9-windows-x86_64-none\Lib\http\client.py", line 1311, in putheader
    values[i] = one_value.encode('latin-1')
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'latin-1' codec can't encode character '\u7ef7' in position 0: ordinal not in range(256)

ytmusicapi version

1.11.3

To Reproduce

Steps to reproduce the behavior:
Since __Secure-3PSID= cannot be randomly changed, during initialization of headers, I added such:

{
    "_x": "\u7ef7",
   ...
}

Here I used the unicode escape since ytmusicapi also having problem in json decoding:

github.com/sigma67/ytmusicapi@21445ca6f3/ytmusicapi/auth/auth_parse.py (L25)

Where the default encoding is based on user preferences on Windows, and it's commonly utf-8 on MacOS/Linux (also not a guarantee)

Additional context

Originally created by @mokurin000 on GitHub (Jan 24, 2026). Original GitHub issue: https://github.com/sigma67/ytmusicapi/issues/855 - [x] I confirm that I have read the [FAQ](https://ytmusicapi.readthedocs.io/en/stable/faq.html#why-is-ytmusicapi-returning-more-results-than-requested-with-the-limit-parameter) **Describe the bug** I just find the `__Secure-3PSID=` in Cookies may contains Unicode, and since ytmusicapi does not process URLEncode for cookies, it may finally result: ```text File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\ytmusicapi\mixins\watch.py", line 141, in get_watch_playlist response = self._send_request(endpoint, body) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\ytmusicapi\ytmusic.py", line 231, in _send_request response = self._session.post( ^^^^^^^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\sessions.py", line 637, in post return self.request("POST", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\sessions.py", line 589, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\sessions.py", line 703, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\requests\adapters.py", line 644, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connectionpool.py", line 493, in _make_request conn.request( File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connection.py", line 499, in request self.putheader(header, value) File "C:\Users\moku\Repos\FeelUOwn\.venv\Lib\site-packages\urllib3\connection.py", line 413, in putheader super().putheader(header, *values) File "C:\Users\moku\AppData\Roaming\uv\python\cpython-3.12.9-windows-x86_64-none\Lib\http\client.py", line 1311, in putheader values[i] = one_value.encode('latin-1') ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'latin-1' codec can't encode character '\u7ef7' in position 0: ordinal not in range(256) ``` **ytmusicapi version** 1.11.3 **To Reproduce** Steps to reproduce the behavior: Since `__Secure-3PSID=` cannot be randomly changed, during initialization of headers, I added such: ```json { "_x": "\u7ef7", ... } ``` Here I used the unicode escape since ytmusicapi also having problem in json decoding: https://github.com/sigma67/ytmusicapi/blob/21445ca6f3bff83fc4f4f4546fc316710f517731/ytmusicapi/auth/auth_parse.py#L25 Where the default encoding is based on user preferences on Windows, and it's commonly utf-8 on MacOS/Linux (also not a guarantee) **Additional context**
kerem 2026-02-27 23:01:15 +03:00
  • closed this issue
  • added the
    bug
    label
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ytmusicapi#522
No description provided.