Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu Chrome:如何从python脚本读取cookie_Python_Google Chrome_Cookies_Ubuntu - Fatal编程技术网

Ubuntu Chrome:如何从python脚本读取cookie

Ubuntu Chrome:如何从python脚本读取cookie,python,google-chrome,cookies,ubuntu,Python,Google Chrome,Cookies,Ubuntu,我正在创建一个包含两部分的小应用程序:一部分显示在Chrome浏览器中,另一部分是用Python编程的本地应用程序 在Chrome中,用户有一个来选择他/她的首选语言。这些信息由Chrome存储在cookie中 我想知道是否有可能检索到该语言首选项(意思是读取cookie),因此当我运行本地应用程序时,它将以用户已使用Chrome选择的相同语言显示 不过,我不能更改系统的区域设置(这可能是最有意义的)。但如果用户通过Chrome选择中文作为首选语言,然后启动本地应用程序,我希望该应用程序能够以中

我正在创建一个包含两部分的小应用程序:一部分显示在Chrome浏览器中,另一部分是用Python编程的本地应用程序

在Chrome中,用户有一个
来选择他/她的首选语言。这些信息由Chrome存储在cookie中

我想知道是否有可能检索到该语言首选项(意思是读取cookie),因此当我运行本地应用程序时,它将以用户已使用Chrome选择的相同语言显示

不过,我不能更改系统的区域设置(这可能是最有意义的)。但如果用户通过Chrome选择中文作为首选语言,然后启动本地应用程序,我希望该应用程序能够以中文启动

我一直在寻找Chrome的浏览器,但我没有看到任何太有用的东西。最多,
--启用文件cookies
选项,然后尝试打开并解析cookie文件。。。不知怎么的,但我能找到的所有信息都很模糊

提前谢谢你


更新。进一步搜索(,)似乎表明Chrome使用SQLLite存储cookie。我正在调查此事。也许有希望…

是的,正如我在对我的问题的评论中提到的,sqlite3听起来很有希望。。。当我学会阅读的那一天,我将征服世界

无论如何,以防万一对其他人有帮助:

#!/usr/bin/env python
import os
import sqlite3
import pwd

_cookieName = "preferredLanguage"

def getPreferredLanguageFromCookieDB():
    retval="en-US"
    cookieDBFilename = os.path.join(pwd.getpwuid(1000).pw_dir, ".config/google-chrome/Default/Cookies")
    if os.path.isfile(cookieDBFilename):
        connection = sqlite3.connect(cookieDBFilename)
        querier = connection.cursor()
        numCookiesMatching = int(querier.execute('SELECT COUNT(*) FROM cookies WHERE (host_key="127.0.0.1" or host_key="localhost") and name="%s"' % (_cookieName)).fetchone()[0])
        if numCookiesMatching == 1:
            retval = querier.execute('SELECT value FROM cookies WHERE (`cookies`.`host_key`="127.0.0.1" or `cookies`.`host_key`="localhost") and `cookies`.`name` = "%s"' % (_cookieName)).fetchone()[0]
        elif numCookiesMatching == 0:
            print("::getPreferredLanguageFromCookieDB > No cookie for '%s' found. Assuming wizard hasn't run yet, which is weird, but not critical" % (_cookieName))
            retval="en-US"
        else:
            raise KeyError("Found %s cookies matching %s in file %s. This shouldn't have happened" % (numCookiesMatching, _cookieName, cookieDBFilename))
            retval=None
    else:
        print("::getPreferredLanguageFromCookieDB > Cookie 'db' (actually, file) %s doesn't exist" % (cookieDBFilename))
        retval="en-US"

    return retval


if __name__ == "__main__":
    print "Prefered language: %s" % getPreferredLanguageFromCookieDB()

这个小片段将连接到Cookies“数据库”(实际上只是文件,但无论如何…),并读取由
localhost
127.0.0.1
发布的“
preferredLanguage
”cookie的值。如果localhost发布了多个“
preferredLanguage
”cookie,它将崩溃。

python客户端和网站是否都在与服务器对话?如果是这样,您可以简单地将语言首选项存储在那里(由浏览器发送),然后从python客户端检索信息…@Hoff->我也考虑过了。python客户机并不是在与服务器通信,但服务器是在localhost中运行的(出于实际目的),所以答案是“是的”。我可以让服务器存储语言首选项。我会把它作为最后的资源。。。我还对Chrome中的cookie管理很好奇,而且。。。如果我已经用Chrome将首选语言存储在硬盘(cookie)中,并且可以避免使用服务器重新存储,那就太好了。不过,感谢您的想法:)命令sqlite3~/.config/googlechrome/Default/Cookies似乎很有希望。。。将继续发布:)