如何从 Chrome 复制 Cookie



我正在使用bash来发布到一个需要我先登录的网站。所以我需要使用登录 cookie 发送请求。所以我尝试登录并保留cookie,但它不起作用,因为该网站使用javascript以一种非常奇怪的方式对密码进行哈希处理,所以我将只从Chrome获取该网站的登录cookie。如何从 Chrome 获取 cookie 并将其格式化为 Curl?

我正在尝试这样做:

curl --request POST -d "a=X&b=Y" -b "what goes here?" "site.com/a.php"
  1. 按 F12 打开开发者控制台(Mac:Cmd+Opt+J)
  2. 查看"网络"选项卡。
  3. 在网站上执行任何您需要的操作以触发您感兴趣的操作
  4. 右键单击相关请求,然后选择"复制为 cURL"

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

在 Chrome 中:

    打开 Web 开发人员工具(查看 -> 开发人员
  • -> 开发人员工具)
  • 打开"应用程序"选项卡(在旧版本上为"资源")
  • 打开饼干树
  • 找到您感兴趣的饼干。

在终端中

  • --cookie "cookiename=cookievalue"添加到 curl 请求中。

在Chrome/Chromium中有一种更简单的方法可以做到这一点。开源的Chrome扩展程序Cookie.txt 将 Cookie 数据导出到 Cookie.txt 文件中,并生成可选的现成 wget 命令。

*我与扩展无关,它运行良好。

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

只需打开浏览器的Developer Tools,单击Console选项卡,最后在控制台中,只需键入以下内容并按 ENTER...

console.log(document.cookie)

结果将立即以正确的语法打印。只需突出显示并复制它。

我很好奇其他人是否报告chrome不允许"复制为卷曲"功能不再具有cookie。

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

对于任何想要网站的所有 cookie 但不想使用扩展程序的人:

  • 打开开发人员工具 ->应用程序 -> Cookie。
  • 选择列表中的第一个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 Filen')
  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

相关内容

  • 没有找到相关文章

最新更新