Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Access to cookie file denied on chrome>104.0.5112.102 #180

Open
zhenyahacker opened this issue Jun 9, 2023 · 22 comments
Open

Access to cookie file denied on chrome>104.0.5112.102 #180

zhenyahacker opened this issue Jun 9, 2023 · 22 comments

Comments

@zhenyahacker
Copy link

Several days ago everything worked fine, and today it broke. Seems like new Chrome update make Chrome to prevent python read cookie file. If I shut Chrome down it works fine again.

Checked on two Win10 PCs - same behavour.

Traceback (most recent call last):
(my own script cut out)
File "E:***.py", line 78, in parse_given_url
cookie_jar = browser_cookie3.chrome(domain_name='domain.name')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Username\AppData\Roaming\Python\Python311\site-packages\browser_cookie3_init_.py", line 1160, in chrome
return Chrome(cookie_file, domain_name, key_file).load()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Username\AppData\Roaming\Python\Python311\site-packages\browser_cookie3_init_.py", line 489, in load
with DatabaseConnetion(self.cookie_file) as con:
File "C:\Users\Username\AppData\Roaming\Python\Python311\site-packages\browser_cookie3_init
.py", line 349, in enter
return self.get_connection()
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Username\AppData\Roaming\Python\Python311\site-packages\browser_cookie3_init_.py", line 383, in get_connection
con = method()
^^^^^^^^
File "C:\Users\Username\AppData\Roaming\Python\Python311\site-packages\browser_cookie3_init_.py", line 374, in __get_connection_legacy
shutil.copyfile(self.__database_file, self.__temp_cookie_file)
File "C:\Program Files\Python311\Lib\shutil.py", line 256, in copyfile
with open(src, 'rb') as fsrc:
^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'C:\Users\Username\AppData\Roaming\..\Local\Google\Chrome\User Data\Default\Network\Cookies'

@rafiibrahim8
Copy link
Collaborator

Possible duplicate of #179.
Maybe the Chrome update changed something.

Having a look.

@zhaotong1121
Copy link

Can't it be used anymore?

@omineko1
Copy link

same issue. began after latest chrome update.

@zhaotong1121
Copy link

There will be issues with the latest version of Chrome, and if the version is rolled back to 104.0.5112.102, there will be no issues

@rafiibrahim8
Copy link
Collaborator

@zhaotong1121 @omineko1 Is the issue happing only on windows? I've checked on Linux, works fine there.

@rafiibrahim8 rafiibrahim8 changed the title Access to cookie file denied Access to cookie file denied on chrome>104.0.5112.102 Jun 12, 2023
@rafiibrahim8 rafiibrahim8 pinned this issue Jun 12, 2023
@omineko1
Copy link

I am on windows 64 bit and I rolled chrome back to 114.0.5735.110 to get it working again

@rafiibrahim8
Copy link
Collaborator

Can not reproduce :(.

Need help.
Can anyone provide the Python version windows version etc. (as much as you can)?

@zhenyahacker
Copy link
Author

zhenyahacker commented Jun 12, 2023

Win10 22H2 64bit [Version 10.0.19045.2965] with all updates installed. System has the only user account.
Python 3.11.2
Pip upgraded to latest version.
Wheel installed.
All packages installed via pip as site-packages.
Chrome installed as usual using official installer and autoupdated.

@jxchlee
Copy link

jxchlee commented Jun 12, 2023

Edition Windows 11 Pro
Version 22H2
Installed on ‎1/‎19/‎2023
OS build 22621.1702
Experience Windows Feature Experience Pack 1000.22641.1000.0
Python 3.11.2
pip 23.1.2
Chrome Version 114.0.5735.110 (Official Build) (64-bit)

It's not working on new Chrome version in windows.
https://stackoverflow.com/questions/76440733/unable-to-open-cookie-file
That link is the post about this issue.

So I solved this issue temporarily by following the post.
It's working when I typed the command below in the target section from properties like image.
--disable-features=LockProfileCookieDatabase
2023-06-12 12_00_52-Google Chrome Properties

@Xdynix
Copy link

Xdynix commented Jun 13, 2023

So I solved this issue temporarily by following the post.
It's working when I typed the command below in the target section from properties like image.
--disable-features=LockProfileCookieDatabase

@jxchlee Confirmed it works, thanks for saving my day!

@gameuser1982
Copy link

Is that temp solution to use "--disable-features=LockProfileCookieDatabase" the only option still for windows? Not a ideal work around since default Chrome settings still don't allow the cookie reading functionality to work right.

@darthwalsh
Copy link

The LockProfileCookieDatabase temp flag solution will go away once Chrome decides this change is permanent :(

This thread has some more context: yt-dlp/yt-dlp#7271 (comment). On that project, there's a new PR showing using Win32 ShadowCopy API that sounds like it works even when Cookies is locked, but requires the python process to be elevated...

@githublyff
Copy link

Windows 10 64
python 3.7.9
chrome 114.0.5735.199

browser-cookie3 0.13.0

browser-cookie3 Unable to read cookie data from Chrome, it used to be normal。

@csm10495
Copy link

csm10495 commented Jul 6, 2023

Hey folks, I wrote that PR for yt-dlp.. and somehow found this thread. It uses ShadowCopy and works just fine when elevated. Another way of potentially getting cookies is to read off the disk directly. Basically you would find the NTFS info for the file (including offset) and then you would read it (and i guess have similar issues for other file systems).

Unfortunately that needs elevation as well. I don't think there will be a way to get the locked file content without elevation on Windows unfortunately.

TLDR: ShadowCopy seems like the best way at the moment, but requires elevation.

@rafiibrahim8
Copy link
Collaborator

@csm10495 Do you want to write a patch for this package too? I'll appreciate your contribution.

@csm10495
Copy link

csm10495 commented Jul 7, 2023

I think best bet would be for me to take the logic i wrote in yt-dlp and move it out to a simple/small lib. Probably only one function: copy_from_shadow or something like that.

Then browser_cookie3 would be able to import it. I'm a bit nervous about making that exact same change again over here and would honestly rather just have both yt-dlp and browser_cookie3 use the same lib.

That way if there are future issues its a fix in one place instead of multiple.

Would using a lib for this be ok?

@rafiibrahim8
Copy link
Collaborator

@csm10495 Sure!

@csm10495
Copy link

csm10495 commented Jul 7, 2023

Sweet. I've made it really easy. https://pypi.org/project/shadowcopy/

pip install shadowcopy

Then to use it:

from shadowcopy import shadow_copy

# Internally this creates a shadow copy instance via WMI, copies the file, then deletes the shadow copy.
shadow_copy("source.txt", "destination.txt")

This will raise if not admin or if called on non-Windows.

@csm10495
Copy link

csm10495 commented Jul 8, 2023

Woot: #185

@pgh268400
Copy link

pgh268400 commented Aug 24, 2023

browser-cookie3  0.19.1
Version 116.0.5845.111
Python 3.11.4
Windows 10 22H2

At first, I had a privilege problem in the above environment, but at some point, I was able to access the cookie value without a privilege problem.

I'm using the latest version of Chrome and I still have access to the cookie value without any permission issues.

image
However, if Python is not installed at all through pyinstaller and uac-admin, and if you run a packaged exe in an environment with the latest Chrome version, the above permission problems occur.

I don't really understand why it works on my computer and it doesn't work on other computers.

@csm10495
Copy link

csm10495 commented Nov 3, 2023

See yt-dlp/yt-dlp#7271 (comment) for a possible non-admin solution here!

@icodinx
Copy link

icodinx commented Oct 29, 2024

[help] Is any body meet this problem on MacOS 15?I tried disable sip and grant full disk access permission to python, but it not works.

here's my env

Chrome: 130.0.6723.70
Python: 3.12.0
OS: macOS 15.1 24B83 arm64 
Kernel: 24.1.0

here's traceback

Python 3.12.0 | packaged by Anaconda, Inc. | (main, Oct  2 2023, 12:22:05) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import browser_cookie3
>>> browser_cookie3.chrome()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/crash/miniconda3/envs/py312/lib/python3.12/site-packages/browser_cookie3/__init__.py", line 1160, in chrome
    return Chrome(cookie_file, domain_name, key_file).load()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/crash/miniconda3/envs/py312/lib/python3.12/site-packages/browser_cookie3/__init__.py", line 489, in load
    with _DatabaseConnetion(self.cookie_file) as con:
  File "/Users/crash/miniconda3/envs/py312/lib/python3.12/site-packages/browser_cookie3/__init__.py", line 349, in __enter__
    return self.get_connection()
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/crash/miniconda3/envs/py312/lib/python3.12/site-packages/browser_cookie3/__init__.py", line 383, in get_connection
    con = method()
          ^^^^^^^^
  File "/Users/crash/miniconda3/envs/py312/lib/python3.12/site-packages/browser_cookie3/__init__.py", line 374, in __get_connection_legacy
    shutil.copyfile(self.__database_file, self.__temp_cookie_file)
  File "/Users/crash/miniconda3/envs/py312/lib/python3.12/shutil.py", line 260, in copyfile
    with open(src, 'rb') as fsrc:
         ^^^^^^^^^^^^^^^
PermissionError: [Errno 1] Operation not permitted: '/Users/crash/Library/Application Support/Google/Chrome/Default/Cookies'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests