Golang : Storing cookies in http.CookieJar example
Cookie can be useful for storing data and to be retrieved later on to fill in form values such as username, address or other hidden parameters that a server might need. For this tutorial, we will explore how to store values into a cookies jar and when the client(usually a browser) encounter the URL the cookies are associated with, the values will be utilized back.
The code below simulate an event where the user visited back youtube.com and the cookies values are reused back.
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/http/cookiejar"
"net/url"
"strings"
)
func main() {
jar, _ := cookiejar.New(nil)
var cookies []*http.Cookie
firstCookie := &http.Cookie{
Name: "PREF",
Value: "f1=50000000&f5=30",
Path: "/",
Domain: ".youtube.com",
}
cookies = append(cookies, firstCookie)
secondCookie := &http.Cookie{
Name: "VISITOR_INFO1_LIVE",
Value: "Luy_gz784rQ",
Path: "/",
Domain: ".youtube.com",
}
cookies = append(cookies, secondCookie)
thirdCookie := &http.Cookie{
Name: "YSC",
Value: "9jGyTn_JiBk",
Path: "/",
Domain: ".youtube.com",
}
cookies = append(cookies, thirdCookie)
fourthCookie := &http.Cookie{
Name: "dkv",
Value: "19a17a80fd703efd450d5ef9dadc32cee3QEAAAAdGxpcGn9mTBVMA==",
Path: "/",
Domain: ".youtube.com",
}
cookies = append(cookies, fourthCookie)
// URL for cookies to remember. i.e reply when encounter this URL
cookieURL, _ := url.Parse("https://www.youtube.com/results?search_query=")
jar.SetCookies(cookieURL, cookies)
// sanity check
fmt.Println(jar.Cookies(cookieURL))
//setup our client based on the cookies data
client := &http.Client{
Jar: jar,
}
urlData := url.Values{}
urlData.Set("search_query", "macross")
req, _ := http.NewRequest("POST", "https://www.youtube.com/results?search_query=", strings.NewReader(urlData.Encode()))
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
panic(nil)
}
body, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
// display content to screen ... save this to a HTML file and view the file with browser ;-)
fmt.Println(string(body))
}
NOTE : If you are using Google Chrome browser, go to Views->Developer->Developer Tools and under the Resources tab, you should see Cookies->www.youtube.com. The cookies values use in the example above are taken from there.
Reference :
See also : Golang : Drop cookie to visitor's browser and http.SetCookie() example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+10.8k Golang : Underscore string example
+12.4k Golang : Get remaining text such as id or filename after last segment in URL path
+10.8k Golang : Get currencies exchange rates example
+5.4k Swift : Convert string array to array example
+8.7k Golang : Another camera capture GUI application with GTK and OpenCV
+5.9k Unix/Linux : Get reboot history or check when was the last reboot date
+5.5k Golang : If else example and common mistake
+9.6k Golang : Detect Pascal, Kebab, Screaming Snake and Camel cases
+19.6k Golang : How to Set or Add Header http.ResponseWriter?
+14.7k Golang : Convert(cast) int to float example
+11k Golang : How to transmit update file to client by HTTP request example
+7.4k Golang : File system scanning