如何从 Chrome 复制 cookies?

我使用 bash 来 POST 到一个需要我先登录的网站。所以我需要用登录 cookie 发送请求。所以我试着登录并保留这些 cookies,但是它不起作用,因为这个网站使用 javascript 以一种非常奇怪的方式来散列密码,所以我只是从 Chrome 中获取我的登录 cookies。如何从 Chrome 获取 cookie 并将其格式化为 Curl?

我正在努力:

curl --request POST -d "a=X&b=Y" -b "what goes here?" "site.com/a.php"
96289 次浏览
  1. 按 F12打开开发者控制台(Mac: Cmd + Opt + J)
  2. 查看“网络”选项卡。
  3. 在网站上做任何你需要的事情来触发你感兴趣的动作
  4. 右键单击相关请求,并选择“ Copy as cURL”

这将为您触发的操作提供 curl 命令,完全填充 cookie 和所有内容。当然,您也可以复制这些标志作为新 curl 命令的基础。

在 Chrome 中:

  • 打开 Web 开发人员工具(view-> developer- > Developertools)
  • 打开 Application 选项卡(在旧版本的参考资料中)
  • 打开饼干树
  • 找到你感兴趣的饼干。

在航站楼

  • --cookie "cookiename=cookievalue"添加到您的卷曲请求中。

在 Chrome/Chromium 中有一个更简单的方法。
开源的 Chrome 扩展 Txt 导出 cookies.txt 文件中的 cookie 数据,并生成一个可选的现成 wget 命令。

我和分机没有任何关系,它真的很好用 * 。

我很好奇是否有其他人报告说 chrome 不再允许“ copy as curl”功能使用 cookies 了。

然后我突然想到,这就像一个安全的想法。如果您访问 example.com,将请求作为 curl 复制到 example.com将具有 cookie。但是,将请求复制到其他域或子域将会清除 Cookie。例如,a.example.comtest.com不会有 cookie。

对于那些想要一个网站的所有 cookie,但又不想使用扩展的人来说:

  • 开放式开发工具-> 应用程序-> Cookies。
  • 选择列表中的第一个 cookie,然后按 Ctrl/Cmd-A
  • Ctrl/Cmd-C复制此表中的所有数据

现在您有了一个由 cookie 数据组成的 TSV (制表符分隔的值)字符串。你可以用任何你想要的语言处理它,但是用 Python (例如) :

import io
import pandas as pd


cookie_str = """[paste cookie str here]"""


# Copied from the developer tools window.
cols = ['name', 'value', 'domain', 'path', 'max_age', 'size', 'http_only', 'secure', 'same_party', 'priority']


# Parse into a dataframe.
df = pd.read_csv(io.StringIO(cookie_str), sep='\t', names=cols, index_col=False)

现在你可以在 Netscape 格式中导出它们:

# Fill in NaNs and format True/False for cookies.txt.
df = df.fillna(False).assign(flag=True).replace({True: 'TRUE', False: 'FALSE'})
# Get unix timestamp from max_age
max_age = (
df.max_age
.replace({'Session': np.nan})
.pipe(pd.to_datetime))
start = pd.Timestamp("1970-01-01", tz='UTC')
max_age = (
((max_age - start) // pd.Timedelta('1s'))
.fillna(0)  # Session expiry are 0s
.astype(int))  # Floats end with ".0"
df = df.assign(max_age=max_age)


cookie_file_cols = ['domain', 'flag', 'path', 'secure', 'max_age', 'name', 'value']
with open('cookies.txt') as fh:
# Python's cookiejar wants this header.
fh.write('# Netscape HTTP Cookie File\n')
df[cookie_file_cols].to_csv(fh, sep='\t', index=False, header=False)

最后,回到外壳:

# Get user agent from navigator.userAgent in devtools
wget -U $USER_AGENT --load-cookies cookies.txt $YOUR_URL

真不敢相信没有人提到这个。这是最简单和最快捷的方法。

只需打开您的浏览器的 Developer Tools,点击 Console标签,最后在控制台中,只需键入以下和按 ENTER..。

console.log(document.cookie)

结果将立即打印在适当的格式。只需突出显示和复制它。