Session

HTTP Requests

Session

Top  Previous  Next

1/ Vấn đề cài đặt Session

Ví dụ đơn giản như thế này:

ØRequest1: đăng nhập trang abc.com bằng tài khoản thứ 1.
ØRequest2: đăng nhập trang abc.com bằng tài khoản thứ 2.

→ Ta thấy ở Request2 mặc dù tài khoản đăng nhập là TK2 nhưng source trả về cũng chỉ có thông tin TK1 thôi, vì Cookies đăng nhập TK1 vẫn còn được lưu, muốn đăng nhập bằng TK2 thì phải Clear Cookies cũ đi, thành ra thế này:

ØRequest1 đăng nhập trang abc.com bằng tài khoản thứ 1.
ØClear Cookies TK1.
ØRequest2 đăng nhập trang abc.com bằng tài khoản thứ 2.

 

Giống như ta đăng nhập tài khoản trên trình duyệt, muốn vào tài khoản khác thì phải Logout tài khoản cũ vậy.

 

Rắc rối sẽ xảy ra ở chỗ này:

·Sau khi clear Cookies TK1 và đăng nhập TK2, giờ ta lại muốn lấy thông tin gì đó từ TK1 → Vậy là phải clear Cookies TK2 và request đăng nhập TK1 trở lại.
·Chưa hết, giờ lại muốn lấy thông tin từ TK2 → Vậy là phải clear Cookies TK1 và request đăng nhập TK2 trở lại. Rắc rối cuộc đời chưa =)) Đó chỉ mới là 2 tài khoản thôi đấy, tưởng tượng nhiều tài khoản thì thế nào :v

 

→ Cần phải bỏ tụi này trong 2 luồng request khác nhau để không bị chồng chéo nhau, tức là request TK1 và TK2 phải nằm trong 2 session khác nhau (mỗi luồng sẽ sử dụng Cookies khác nhau, tương ứng với luồng đó) để dễ quản lý.

 

 

 

2/ Các hàm giúp thực hiện cài đặt Session

_HttpRequest_SetSession

Cài đặt Session toàn cục cho Request

_HttpRequest_ClearSession

Xoá tất cả Cookies và Handles mà 1 Session đã sử dụng

$iReturn (mode set sesson)

Cài đặt Session cục bộ cho Request

 

·_HttpRequest cho phép tạo ra 100 Session khác nhau với số thứ tự từ 0 đến 99.
·Mặc định nếu không cài đặt Session thì tất cả các request mà _HttpRequest chạy sẽ nằm trong Session 0.

 

 

 

3/ Ví dụ (Cần nắm cơ bản _HttpRequest trước rồi mới đọc hiểu ví dụ này)

 

Đăng nhập trang https://exchangepm.com bằng 2 tài khoản huan3hoang4huan4hoang5 (mật khẩu 123456) và lấy thông tin của trang này từ 2 tài khoản cùng lúc mà không cần Clear Cookies và đăng nhập lại liên tục.

 

Nếu không nằm trong các session khác nhau thì tất cả những _HttpRequest_Test trong code bên dưới chỉ ghi ra source đăng nhập nick huan4hoang5.

Vì 2 tài khoản đăng nhập ở 2 session khác nhau nên nó ghi ra source đăng nhập 2 tài khoản huan3hoang4huan4hoang5 chuẩn xác với thứ tự các Tab trình duyệt sẽ xuất hiện với thông tin tài khoản: huan4hoang5, huan3hoang4, huan4hoang5, huan4hoang5, huan3hoang4.

 

#include <_HttpRequest.au3>

$URL_LoginPage = 'https://exchangepm.com/login.html'

 

_HttpRequest_SetSession(1) ; Cài Session 1, request bên dưới hàm này sẽ chạy trong Session 1

_HttpRequest_Test( _HttpRequest(2, $URL_LoginPage, 'username=huan4hoang5&password=123456')) ; → TK huan4hoang5 sẽ chạy trong Sesion1

Sleep(1000)

;-----------------------------------------------------

_HttpRequest_SetSession(2) ; Chuyển đến Session 2, request bên dưới hàm này sẽ chạy trong Session 2

_HttpRequest_Test( _HttpRequest(2, $URL_LoginPage, 'username=huan3hoang4&password=123456')) ; → TK huan3hoang4 sẽ chạy trong Sesion2

Sleep(1000)

;-----------------------------------------------------

_HttpRequest_SetSession(1) ; Quay trở lại với Session 1, các request bên dưới sẽ hiện thông tin của TK huan4hoang5 do Session 1 đang lưu Cookies đăng nhập của TK này.

_HttpRequest_Test( _HttpRequest(2, 'https://exchangepm.com/mua-ban-pm-perfect-money.html'))

Sleep(1000)

_HttpRequest_Test( _HttpRequest(2, 'https://exchangepm.com/mua-ban-btc-e-code.html'))

Sleep(1000)

;-----------------------------------------------------

_HttpRequest_SetSession(2) ; Quay trở lại với session 2, các request bên dưới sẽ hiện thông tin của TK huan3hoang4 do Session 2 đang lưu Cookies đăng nhập của TK này.

_HttpRequest_Test( _HttpRequest(2, 'https://exchangepm.com/mua-ban-pm-perfect-money.html'))