Hãy để ý URL cần request đến có chứa 2 giá trị csaKey1 và csaKey2. Chúng ở đâu ra ? Như thường lệ ta sẽ request đến địa chỉ header Referer để lấy source Html trả về và tìm thử. → Ta request địa chỉ https://secufiles.com/index.html 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à fs_csrf) 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:
→ Ta StringRegExp với pattern là "url: '(https://secufiles.com/core/ page/ ajax/file_upload_handler.*?)'"(Xem thêm về StringRegExp tại đây)
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
·
Vậy còn lại header X-Requested-With: XMLHttpRequestlà cần nạp vào $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
Nhìn Data-Form ta sẽ thấy 2 Key có giá trị lạ là _sessionid và cTracker. Vẫn như thường lệ, ta sẽ tìm trong source request từ địa chỉ header Referer. Ở bước 1 khi tìm csaKey1, csaKey2 ta đã có nguồn Html rồi, giờ tìm tiếp _sessionid và cTracker thì thấy:
$sFilePath = FileOpenDialog("Choose a File to post", "", "File (*.*)", 4)
If@errorThenExit
Local $aForm = ['_sessionid=' &$_sessionid, 'cTracker=' &$cTracker, 'maxChunkSize=100000000', 'folderId=', '$files[]=' &$sFilePath] ; Mấy ví dụ trước làm Form kiểu mảng 2 Chiều chán rồi, lần này làm kiểu Mảng 1 Chiều đổi gió :v
$rq = _HttpRequest(2, $url, $aForm, '', '', 'X-Requested-With: XMLHttpRequest') ; Làm tắt nạp thẳng mảng Form vào luôn khỏi qua bước dùng_HttpRequest_CreateDataForm