浏览器JS控制台获取

document.cookie
>  document.cookie
<. 'c01b67f4002fc81ca5b5015821bdab73__typecho_uid=1; c01b67f4002fc81ca5b5015821bdab73__typecho_authCode=%24T%24RCFvoIeVQ2212a46302f9d907b55dd835a3e728b3; PHPSESSID=4dl7shuot7gi8bisleplhgr3gj; c01b67f4002fc81ca5b5015821bdab73extend_contents_views=188%2C184%2C256%2C261%2C226%2C220%2C218%2C217%2C202%2C186'
HttpOnly

chromedp浏览器爬虫获取

使用远程调试模式启动浏览器

chromestart.sh
#!/bin/bash

# 无界面模式启动
"/opt/google/chrome/google-chrome" --headless --no-sandbox --disable-gpu --log-level=1 --remote-debugging-port=9222 --disable-popup-blocking --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36" --proxy-server=http://127.0.0.1:1080 --user-data-dir=runtime/chrome_user_data
--headless--no-sandbox--disable-gpu--remote-debugging-port=9222--user-agent--proxy-server--user-data-dir

注: 开发调试时,请关闭无界面模式,方便肉眼实时观察浏览器允许状况。

chromedp获取cookie

go get github.com/chromedp/chromedp

演示代码: main.go

package main

import (
    "context"
    "log"

    "github.com/chromedp/cdproto/network"
    "github.com/chromedp/chromedp"
)

func main() {
    ctx, cancel := chromedp.NewRemoteAllocator(context.Background(), "ws://127.0.0.1:9222")
    defer cancel()

    c, cancel1 := chromedp.NewContext(ctx)
    defer cancel1()

    err := chromedp.Run(c,
        chromedp.Navigate("https://helloword.com"),
        chromedp.WaitVisible(`//xpath`, chromedp.BySearch),
        chromedp.ActionFunc(func(ctx context.Context) error {
            // 获取cookie
            cookies, err := network.GetAllCookies().Do(ctx)
            // 将cookie拼接成header请求中cookie字段的模式
            var c string
            for _, v := range cookies {
                c = c + v.Name + "=" + v.Value + ";"
            }
            log.Println(c)
            if err != nil {
                return err
            }
            return nil
        }))
    if err != nil {
        log.Fatal(err)
    }
}