Skip to content

Instantly share code, notes, and snippets.

@jpoz
Created January 29, 2015 06:52
Show Gist options
  • Save jpoz/b5c88afbca75da185173 to your computer and use it in GitHub Desktop.
Save jpoz/b5c88afbca75da185173 to your computer and use it in GitHub Desktop.
Script to view your Account Balance for your Discover Card
package main
import (
"fmt"
"net/http"
"net/http/cookiejar"
"net/url"
"os"
"time"
"github.com/PuerkitoBio/goquery"
)
var startURL = "https://discovercard.com/"
var postURL = "https://www.discovercard.com/cardmembersvcs/loginlogout/app/signin"
var homepageURL = "https://www.discovercard.com/cardmembersvcs/achome/homepage"
var userID = os.Args[1]
var password = os.Args[2]
func main() {
// Save dem cookies
jar, _ := cookiejar.New(nil)
client := http.Client{nil, nil, jar, time.Minute}
// Get base URL to grab cookie value
req, err := http.NewRequest("GET", startURL, nil)
_, err = client.Do(req)
if err != nil {
fmt.Println(err)
}
// Post the userID and password over
resp, err := client.PostForm(postURL,
url.Values{"userID": {userID}, "password": {password}})
if err != nil {
fmt.Println(err)
}
// Get the homepage
resp, err = client.Get(homepageURL)
if err != nil {
fmt.Println(err)
}
if resp.Request.URL.String() != homepageURL {
fmt.Println("Login failure :(")
return
}
// Read and query document
doc, err := goquery.NewDocumentFromResponse(resp)
if err != nil {
fmt.Println(err)
}
sel := doc.Selection.Find(".card-balances .amount")
balance, _ := sel.Html()
fmt.Println(balance)
}
@jpoz
Copy link
Author

jpoz commented Jan 29, 2015

Usage:

go run discover.go username password

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment