cookie.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package xnet
  2. import (
  3. "gcore/core"
  4. "github.com/zellyn/kooky/chrome"
  5. "log"
  6. "net/http"
  7. "os"
  8. "path/filepath"
  9. "strings"
  10. )
  11. // @title LoadChromeCookies
  12. // @description 从本地chrome路径加载指定domain的cookies
  13. // @param domain string 需要提起cookie的domain
  14. // @return
  15. func LoadChromeCookies(domain string) ([]*http.Cookie, error) {
  16. var cookies []*http.Cookie
  17. cookiesName := "Cookies"
  18. userHomeDir, _ := os.UserHomeDir()
  19. defaultPath := "AppData/Local/Google/Chrome/User Data/Default/"
  20. cookiesFile := filepath.Join(userHomeDir, defaultPath, cookiesName)
  21. exist, _ := core.FileExists(cookiesFile)
  22. if exist == false {
  23. cookiesFile = filepath.Join(userHomeDir, defaultPath, "Network", cookiesName)
  24. }
  25. println(cookiesFile)
  26. chromeCookies, err := chrome.ReadCookies(cookiesFile)
  27. if err != nil {
  28. log.Printf("ReadCookies error : %v\n", err)
  29. return cookies, err
  30. }
  31. for _, cookie := range chromeCookies {
  32. if strings.Contains(cookie.Domain, domain) == true {
  33. //fmt.Println(cookie)
  34. cookies = append(cookies, &http.Cookie{
  35. Name: cookie.Name,
  36. Value: cookie.Value,
  37. Path: cookie.Path,
  38. Domain: cookie.Domain,
  39. Expires: cookie.Expires,
  40. })
  41. }
  42. }
  43. return cookies, nil
  44. }
  45. // @title LoadChromeCookiesVer1
  46. // @description 从本地chrome路径加载指定domain的cookies
  47. // @param domain string 需要提起cookie的domain
  48. // @return
  49. func LoadChromeCookiesVer1(domain, cookiesPath string) ([]*http.Cookie, error) {
  50. var cookies []*http.Cookie
  51. chromeCookies, err := chrome.ReadCookies(cookiesPath)
  52. if err != nil {
  53. log.Printf("ReadCookies error : %v\n", err)
  54. return cookies, err
  55. }
  56. for _, cookie := range chromeCookies {
  57. if strings.Contains(cookie.Domain, domain) == true {
  58. //fmt.Println(cookie)
  59. cookies = append(cookies, &http.Cookie{
  60. Name: cookie.Name,
  61. Value: cookie.Value,
  62. Path: cookie.Path,
  63. Domain: cookie.Domain,
  64. Expires: cookie.Expires,
  65. })
  66. }
  67. }
  68. return cookies, nil
  69. }