Example 2

HTTP Requests

Example 2

Top  Previous  Next

Đăng nhập trang https://www.chotot.com/

và lấy AccessToken sau khi đăng nhập thành công

 

 

* Nếu chưa có tài khoản thì tạo tài khoản mới hoặc dùng tài khoản sau để làm thử:

user: 0989815790, password: lucky7979

 

 

Ta làm theo từng bước như sau:

 

1/ Xem Live HTTP Headers các request cần làm

 

 

·Điền thông tin đăng nhập vào (username, password) nhưng khoan bấm nút Đăng Nhập.

 

·Nếu chưa bật Live HTTP Headers thì bật nó lên. Nếu bật rồi thì bấm Clear để xoá hết các request cũ không liên quan.

 

·Bây giờ mới bấm nút Đăng nhập và Live HTTP Headers sẽ hiển thị 1 đống thông tin. Vì là đăng nhập nên tìm trong Live HTTP Headers chỗ nào có POST và có tên host chotot.com với login, thì thấy:

 

https://accounts.chotot.com/api/login

 

POST /api/login HTTP/1.1

Host: accounts.chotot.com

User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0 Cyberfox/51.0

Accept: */*

Accept-Language: en-US

Accept-Encoding: gzip, deflate, br

Content-Type: application/json

Referer: https://accounts.chotot.com/login?continue=https://www4.chotot.com/dashboard/ads&service=menu

Content-Length: 99

DNT: 1

Connection: keep-alive

  {"phone":"0989815790","password":"lucky7979","rememberMe":true,"msess":null,"delaySetCookie":false}

→ DataToSend

 

HTTP/2.0 200 OK

Date: Fri, 06 Oct 2017 05:59:12 GMT

Content-Type: application/json; charset=utf-8

Content-Length: 1023

X-Powered-By: Express

Strict-Transport-Security: max-age=86400; includeSubDomains; preload

Set-Cookie: userId=MzM0NjM0Ng%3D%3D; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: fb_full_name=Q2hvIFJhbyBWYXQ=; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: u.r=1; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: u.ac=3346346; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: u.ph=0989815790; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: bRefreshToken=undefined; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT; HttpOnly

Set-Cookie: privateToken=eyJhbGciOiJIUzI. 1NiIsInR5cCI6IkpXVCJ. 9.2UkW_1Fn2-ql. xongKEuKpa6liG8; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: refreshToken=NGVmNDlkZmFmZWNhNDllNzk. yODVjYjM2NTEzNjRjYTc%3D; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Set-Cookie: chapyToken=OGIzOGZmM2I3NmY. wNDQzZTllNWNjZGE. yNDFlNTI2OWM%3D; Max-Age=2592000; Domain=.chotot.com; Path=/; Expires=Sun, 05 Nov 2017 05:59:13 GMT

Etag: W/"3ff-D8JvCW6EGZMgDaWjQCbnWA"

Vary: Accept-Encoding

X-Frame-Options: SAMEORIGIN

X-Firefox-Spdy: h2

 

 

2/ Phân tích Headers

 

Các Header như Accept, Accept-Language, Accept-Encoding, Connection, Content-Length, User-Agent, DNT: 1 ta không cần để ý đến chúng vì UDF đã add sẵn hết rồi. Xem thêm chi tiết tại mục $sAdditional_Headers

 

 

3/ Phân tích Referer

 

Hình trên có Referer nhưng không điền vào tham số $sReferer cũng được, chừng nào request thất bại mới điền vào để thử.

 

 

4/ Phân tích Cookie

 

Những cookie tạp nham thường có dạng __abcxyz, ___abcxyz ta không cần để ý đến chúng.

 

 

5/ Phân tích Data cần gửi đi

 

DataToSend thường nằm thụt lùi qua phải hơn so với các dòng khác, nó là:

{"phone":"0989815790","password":"lucky7979","rememberMe":true,"msess":null,"delaySetCookie":false}

 

Các thông số trong DataToSend không có gì cần bàn đến.

 

 

6/ Phân tích ngoài luồng

 

Nếu đăng nhập thành công thì Data trả về sẽ có dạng tương tự như sau:

{"last_name":"", "create_time":1474866274,"full_name":"Test", "account_status":"inactive", "first_name":"", "account_id":3346346,"is_active":true,"phone":"0989815790", "phone_verified":"t", "email_verified":"f", "account_oid":"f14421f2132abc0e3ec845bd10aa0bd1", "avatar":"https://static.chotot.com.vn/imaginary/j43jg53g45jj", "gender":"", "token":"eyJhbGciOiJIUzI. 1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIzMzQ2MzQ2IiwiaX. NzIjoiY2hvdG90. IiwicG9sIjoiNTcx. 8BaPseelg4DsOfBlF-_- H21PU3wixmok"}

 

- Data trả về đầy đủ thông tin Tài khoản là đã đăng nhập thành công.

- Yêu cầu của ví dụ này là lấy AccessToken của trang chotot, ta thấy nó nằm trong Data trả về chỗ "token". Vậy chỉ cần StringRegExp để lấy Token đó là hoàn tất ví dụ.

 

 

7/ Hoàn thiện code

 

#include <_HttpRequest.au3>

$phone = '0989815790'

$pass = 'lucky7979'

$rq = _HttpRequest(2, 'https://accounts.chotot.com/api/login', '{"phone":"' & $phone & '","password":"' & $pass & '","rememberMe":true,"msess":null,"delaySetCookie":false}')

$Token = StringRegExp($rq, '"token":"(.*?)"', 1)

If @error Then Exit MsgBox(4096, 'Lỗi', 'Đăng nhập thất bại')

$Token = $Token[0]

MsgBox(4096, 'AccessToken', $Token)