Example 2

HTTP Requests

Example 2

Top  Previous  Next

Đổi tên tài khoản của một tài khoản bạn đã tạo trang:

https://www.chotot.com/

 

 

* 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

 

Muốn đổi tên tài khoản thì tất nhiên là phải đăng nhập vào tài khoản đó trước thì mới đổi tên được, vậy là ta sẽ phải làm 2 bước là: Đăng Nhập và Đổi Tên.

 

Bước Đăng Nhập thì đã làm ở Ví dụ 2 bài Practice POST application/json rồi, ta vào đây để đọc lại. Sau đó ta tiếp tục làm phần Đổi Tên.

 

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

 

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

 

·Sau khi đăng nhập chotot.com ta vào quản lý tài khoản, bấm nút Thêm rồi chọn Cài Đặt Thông Tin.

 

·Bấm Chỉnh Sửa, điền Tên Tài Khoản mới nhưng khoan bấm nút Lưu Thay Đổi.

 

·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 Lưu Thay Đổi và Live HTTP Headers sẽ hiển thị 1 đống thông tin. Tìm đoạn thông tin request có liên quan thì thấy:

 

https://gateway.chotot.com/v1/private/profile

 

PUT /v1/private/profile HTTP/1.1

Host: gateway.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

Authorization: Bearer eyJhbGciOiJIUzI 1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIzM zQ2MzQ2IiwiaXNzIjoiY2hvdG90IiwicG9s IjoiNTcxZWYyZDY 4ZjAxMzAzMDNkMDAw 1MqZyOwFCq0U3_Vt 2UkW_1Fn2-qlxongK EuKpa6liG8

Content-Type: application/json

Referer: https://www4.chotot.com/dashboard/profile/edit

Content-Length: 48

Origin: https://www4.chotot.com

DNT: 1

Connection: keep-alive

  {"full_name":"Test","address":"Ben xe nga 4 ga"}

→ DataToSend

 

HTTP/2.0 200 OK

Date: Fri, 06 Oct 2017 06:01:01 GMT

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

Content-Length: 274

x-kong-upstream-latency: 10

x-kong-proxy-latency: 0

Via: kong/0.10.2

Access-Control-Allow-Origin: https://www4.chotot.com

access-control-expose-headers: X-Total-Count

Vary: Origin

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

 

·Hãy để ý đến Header: Authorization: Bearer eyJhbGciOiJIUzI......

 

 

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

 

Không có Cookie.

 

 

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à:

{"full_name":"Test","address":"Ben xe nga 4 ga"}

 

Các thông số trong DataToSend không có gì cần bàn đến, gồm: Tên tài khoản muốn thay và địa chỉ muốn thay.

 

 

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

 

·Như đã lưu ý ở trên, nếu trong Request Header của một trang có Authorization: Bearer thì đó là một dữ kiện cực kì quan trọng, điều đó nói lên trang request này sử dụng Phương thức dùng AccessToken để truy cập tài khoản chứ không dùng Cookie (điều đó giải thích vì sao trong hình trên không có Cookie)
·AccessToken thì ta đã lấy được khi đăng nhập trang chotot.com rồi (xem lại bài đăng nhập chotot.com tại đây) nên cũng không có gì đáng bàn tới.
·Bên cạnh đó, đây là phương thức request PUT nên nhớ gán vào tham số $sOVerb là PUT

 

 

7/ Hoàn thiện code

 

#include <_HttpRequest.au3>

#Region <Đăng nhập và lấy AccessToken>

$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)

#EndRegion

 

#Region <Đổi thông tin tài khoản>

$NewName = 'Doi ten moi' ; Điền bất cứ tên nào mình thích

$rq = _HttpRequest(2, 'https://gateway.chotot.com/v1/private/profile', '{"full_name":"' & $NewName & '","address":"Ben xe nga 4 ga"}', '', '', 'Authorization: Bearer ' & $Token, 'PUT')

; Refresh lại trang Thông tin để thấy sự thay đổi

#EndRegion