Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function _initialConnection(user, pass, callback) {
- let opts = {
- url: config.loginURL,
- headers: {
- "User-Agent": "niantic"
- }
- };
- request.get(opts, (err, resp, body) => {
- if (err) return callback(err, null);
- console.log(resp.headers);
- let data;
- try {
- data = JSON.parse(body);
- } catch(err) {
- return callback(err, null);
- }
- return callback(null, user, pass, data);
- });
- }
- function _postConnection(user, pass, data, callback) {
- let opts = {
- url: config.loginURL,
- form: {
- 'lt': data.lt,
- 'execution': data.execution,
- '_eventId': 'submit',
- 'username': user,
- 'password': pass
- },
- headers: {
- 'User-Agent': 'niantic'
- }
- };
- request.post(opts, (err, resp, body) => {
- if (err) return callback(err, null);
- let parsedBody;
- if (body) {
- try {
- parsedBody = JSON.parse(body)
- if (('errors' in parsedBody) && parsedBody.errors.length > 0) {
- return callback(
- new Error('Error Logging In: ' + paredBody.errors[0]),
- null
- )
- }
- } catch(err) {
- return callback(err, null);
- }
- }
- console.log(resp.headers)
- let ticket = resp.headers['location'].split('ticket=')[1];
- callback(null, ticket);
- });
- }
- // Initiate HTTP Client / Cookie JAR
- jar, err := cookiejar.New(nil)
- if err != nil {
- return "", fmt.Errorf("Failed to create new cookiejar for client")
- }
- newClient := &http.Client{Jar: jar, Timeout: 5 * time.Second}
- // First Request
- req, err := http.NewRequest("GET", loginURL, nil)
- if err != nil {
- return "", fmt.Errorf("Failed to authenticate with Googlen Details: nn Username: %sn Password: %sn AuthType: %sn", details.Username, details.Password, details.AuthType)
- }
- req.Header.Set("User-Agent", "niantic")
- resp, err := newClient.Do(req)
- if err != nil {
- return "", fmt.Errorf("Failed to send intial handshake: %v", err)
- }
- respJSON := make(map[string]string)
- err = json.NewDecoder(resp.Body).Decode(&respJSON)
- if err != nil {
- return "", fmt.Errorf("Failed to decode JSON Body: %v", err)
- }
- resp.Body.Close()
- // Second Request
- form := url.Values{}
- form.Add("lt", respJSON["lt"])
- form.Add("execution", respJSON["execution"])
- form.Add("_eventId", "submit")
- form.Add("username", details.Username)
- form.Add("password", details.Password)
- req, err = http.NewRequest("POST", loginURL, strings.NewReader(form.Encode()))
- if err != nil {
- return "", fmt.Errorf("Failed to send second request authing with PTC: %v", err)
- }
- req.Header.Set("User-Agent", "niantic")
- req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
- resp, err = newClient.Do(req)
- if err != nil {
- return "", fmt.Errorf("Failed to send second request authing with PTC: %v", err)
- }
- log.Println(resp.Location())
- ticket := resp.Header.Get("Location")
- if strings.Contains(ticket, "ticket") {
- ticket = strings.Split(ticket, "ticket=")[1]
- } else {
- return "", fmt.Errorf("Failed could not get the Ticket from the second requestn")
- }
- resp.Body.Close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement