Đ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 steam-gamers.net với login, thì thấy:
Ta thấy địa chỉ request có đoạn s=5ce1a193df2cdde210ac104712d6c7f6. Cách tìm đọc ở phầnPhân tích Data cần gửi đi bên dưới.
2/ Phân tích Headers
·
Các Header như Accept, Accept-Language, Accept-Encoding, Connection, Content-Length, User-Agent,DNT: 1ta 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
·
Header còn lạiUpgrade-Insecure-Requests: 1 thường thì không cần nạp vào vẫn được.
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à:
Ta có thể đặt username và password là biến để dễ tuỳ biến hơn: $sDataToSend = vb_login_username=' &$name&'&vb_login_password=' &$pass& .....
·
Vì chuỗi gửi đi $sDataToSend phải là chuỗi không dấu, nhưng sẽ có trường hợp đặt tên cho tài khoản có chứa ký tự có dấu nên để chắc ăn, ta dùng hàm _URIEncode($name) để biến chuỗi có dấu thành chuỗi không dấu theo chuẩn URL.
·
Đoạns=5ce1a193df2cdde210ac104712d6c7f6: s ta tìm ở đâu ? Thông thường để tìm một giá trị lạ ta sẽ tìm giá trị đó trên Live HTTP Headers trước. Nếu tìm không thấy ta sẽ làm 1 request lấy source từ địa chỉ header Referer. Nhìn hình ở trên, địa chỉ Referer đó là https://www.steam-gamers.net/forum/ →Ta request địa chỉ này và lưu source request được vào Clipboard:
Paste source đã lưu vào Notepad hoặc trang SciTE mới và search thử (Ctrl+F3) giá trị lạ đó (ở ví dụ này là s) có nằm trong source không, nếu có thì dùng StringRegExp để tách lấy nó ra. Ta tìm thử thì quả nhiên là thấy:
; → Sau request trên thì _HttpRequest sẽ lưu Cookies đăng nhập vào cache (Nếu thành công).
; → Tham số $iReturn của _HttpRequest điền số mấy cũng được bởi cái ta cần là Cookies đăng nhập đã sẵn sàng có trong cache khi request thành công. Vì vậy ta điền 0 để tăng tốc độ request (do không tốn thêm thời gian để lấy bất cứ giá trị trả về nào)
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
·
Vậy là còn lại header X-Requested-With: XMLHttpRequest cần gán vào tham số$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
·
Cookie trong hình là những Cookies thông tin đăng nhập mà ta đã lấy được từ request đăng nhập (Sau khi đăng nhập thành công thì các Cookies này đã được tự động lưu vào Cache nên không cần phải nạp lại vào tham số $sCookie của _HttpRequest)
·
Ngoài ra, để bỏ qua bước Đăng nhập ở những lần chạy code sau ta có thể dùng _GetCookie để trích lấy Cookies từ request đăng nhập, lưu lại Cookies đó vào ini hay txt, lần sau chạy code thì chỉ việc đọc từ ini/txt rồi nạp vào tham số $sCookie của _HttpRequest là xong. Xem cụ thể cách làm tạiđây.
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à:
p và securitytoken tìm ở đâu ? Thông thường để tìm một giá trị lạ ta sẽ tìm giá trị đó trên Live HTTP Headers trước. Nếu tìm không thấy ta sẽ làm 1 request lấy source từ địa chỉ header Referer. Nhìn hình ở trên, địa chỉ Referer đó là https://www.steam-gamers.net/forum/showthread.php?t=72832 → ta request địa chỉ này và lưu source request được vào đâu đó (sử dụng hàm ClipPut để copy giá trị biến lưu source vào Clipboard rồi paste vào Notepad, new tab SciTE... chẳng hạn) và search thử (Ctrl+F3) giá trị lạ đó (ở ví dụ này là p và securitytoken) có nằm trong source không, nếu có thì dùng StringRegExp để tách lấy nó ra. Ta tìm thử thì thấy: