由于字符无效,无法将cookie加载到cookiejar中

时间:2019-06-20 20:48:53

标签: go cookies session-cookies

我正在尝试将cookie添加到持久性存储中并对其进行检索,以便解析需要登录的网站。

我正在从extension获取cookie,并使用juju cookiejar将其添加到cookiejar中,该https://docs.aws.amazon.com/en_en/glue/latest/dg/grouping-input-files.html从env vars中读取默认cookie文件,但是我不断收到错误cannot load cookies: invalid character 'c' looking for beginning of value { {1}}- 代表txt文件中的第一个字符 。 我想知道我是否解析正确。

c

更新,似乎库正在寻找Json数据:

<!-- language: lang-go -->
func main(){
    jujujar, err := cookiejar.New(&cookiejar.Options{
    Filename: cookiejar.DefaultCookieFile(),
})

if err != nil {
    panic(err)
}

client := &http.Client{
    Jar: jujujar,
}

response, err := client.Get("https://example.com/categories/ProductList.aspx?Category=someCategories")

if err != nil {
    panic(err)
}

query, err := goquery.NewDocumentFromResponse(response)
if err != nil {
    panic(err)
}

myQuery := query.Find("body a").Each(func(index int, item *goquery.Selection) {
    linkTag := item
    link, _ := linkTag.Attr("href")
    linkText := linkTag.Text()
    fmt.Printf("Link #%d: '%s' - '%s'\n", index, linkText, link)
})

fmt.Print(myQuery)

}

1 个答案:

答案 0 :(得分:0)

Juju希望cookie以JSON格式保存:

https://github.com/juju/persistent-cookiejar/blob/master/serialize.go

JSON需要反序列化为[]entry,如下所示:

https://github.com/juju/persistent-cookiejar/blob/master/jar.go#L140

该插件似乎以以下格式保存cookie:

[domain] / [true or false] / [true or false] / [Epoch date/time] / [name] / [content]

不确定是什么还是假的,但是您基本上需要解析这些行并将它们映射到您自己的Entry结构(因为它们不会被导出)-您可以将CSV解析器与自定义定界符,然后将其序列化为JSON,然后使用您创建的JSON传递给Juju。