Example 5

HTTP Requests

Example 5

Top  Previous  Next

Lấy link tải trang Fshare (Có tài khoản):

https://www.fshare.vn/file/TF6JKXFF4T/

 

 

Làm tương tự như Ví dụ 4, chỉ khác một chỗ là phải làm thêm code request Đăng nhập vào tài khoản.

 

Vì vậy phần lấy link tải sẽ không hướng dẫn nữa mà chỉ nói về bước request Đăng nhập mà thôi.

 

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

 

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

 

 

·Điền username và pass. Khoan bấm vào 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. Ta tìm trong Live HTTP Headers đoạn request liên quan đến đăng nhập sau:

 

https://www.fshare.vn/login

 

POST /login HTTP/1.1

Host: www.fshare.vn

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

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US

Accept-Encoding: gzip, deflate, br

Referer: https://www.fshare.vn/

Cookie: session_id=ha4fnbrn17anfbjkppqoinuo55; apluuid=747aec1226a444bfa2042cb543189c72; fosp_aid=be8e32c4d247cb40; _ga=GA1.2.521239124.1504840725; _gid=GA1.2.92612061.1504840726; fosp_location_zone=1

DNT: 1

Connection: keep-alive

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

Content-Length: 206

  fs_csrf=3342032daf77786afa935a036b11be73e9429ed0& LoginForm%5Bemail%5D=huan4hoang5%40gmail.com& LoginForm%5Bpassword%5D=123456& LoginForm%5BrememberMe%5D=0& LoginForm%5BrememberMe%5D=1& yt1=%C4%90%C4%83ng+nh%E1%BA%ADp

→ DataToSend

 

 

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

→ Header còn lại sẽ nạp vào $sAdditional_Headers là: Upgrade-Insecure-Requests: 1

 

 

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. Còn lại các Cookie như: session_id, proxy_s_sv, apluuid ta tạm thời không suy nghĩ đến chúng, thử request trước, nếu thất bại thì quay lại thử nạp các Cookie nà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à:

fs_csrf=3342032daf77786afa935a036b11be73e9429ed0& LoginForm%5Bemail%5D=huan4hoang5%40gmail.com& LoginForm%5Bpassword%5D=123456& LoginForm%5BrememberMe%5D=0& LoginForm%5BrememberMe%5D=1& yt1=%C4%90%C4%83ng+nh%E1%BA%ADp

 

·Ta có thể đặt 2 chỗ [email protected]123456 là biến để dễ tuỳ biến hơn: $sDataToSend = ... &'LoginForm%5Bemail%5D=' & $mail & 'LoginForm%5Bpassword%5D=' & $pass & ....

 

·Email đã bị encode (@ → %40) nên ta dùng hàm _URIEncode để chuyển: $sDataToSend = ... & 'LoginForm%5Bemail%5D=' & _URIEncode($mail) & 'LoginForm%5Bpassword%5D=' & $pass & ....

 

·fs_csrf 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.fshare.vn/ → Ta request địa chỉ này và lưu source request được vào Clipboard:

$rq_referer = _HttpRequest(2, 'https://www.fshare.vn/')

ClipPut($rq_referer)

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:

 

<html>

.........

<form id="login-form" action="/login" method="post">

<input type="hidden" value="cafc05fcb28231d1f5263e15aa38ba3a34dca96d" name="fs_csrf" />              

<div class="form-group">

.........

</html>

 

→ Ta StringRegExp với pattern là 'value="(.*?)" name="fs_csrf"' (Xem thêm về StringRegExp tại đây)

 

Hoặc ta cũng có thể sử dụng hàm _HttpRequest_SearchHiddenValues để tìm nhanh giá trị ẩn đó.

 

 

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

 

Sau khi request ta thấy không cần các Cookies như: session_id, proxy_s_sv, apluuid... thì vẫn request thành công → Không cần làm thêm bước tìm các Cookie này.

 

 

7/ Hoàn thiện code

 

Kết hợp code Đăng nhập ở trên và code lấy link tải ở Ví dụ 4 ta được code hoàn chỉnh sau:

 

#include <_HttpRequest.au3>

 

#Region <Đăng nhập>

$mail = '[email protected]'

$pass = '123456'

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

$rq1 = _HttpRequest(2, 'https://www.fshare.vn/') ; Lấy source địa chỉ Referer để tìm fs_csrf

$fs_csrf = StringRegExp($rq1, 'value="(.*?)" name="fs_csrf"', 1)

If @error Then Exit MsgBox(4096, 'Lỗi', 'Không lấy được fs_csrf')

$fs_csrf = $fs_csrf[0]

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

$rq2 = _HttpRequest(1, 'https://www.fshare.vn/login', 'fs_csrf=' & $fs_csrf & '&LoginForm%5Bemail%5D=' & _URIEncode($mail) & '&LoginForm%5Bpassword%5D=' & $pass & '&LoginForm%5BrememberMe%5D=0&LoginForm%5BrememberMe%5D=1' & '&yt1=%C4%90%C4%83ng+nh%E1%BA%ADp', '', '', 'Upgrade-Insecure-Requests: 1')

#EndRegion

 

#Region <Lấy link tải>

$sURL = 'https://www.fshare.vn/file/TF6JKXFF4T/'

$ID_File = StringRegExp($sURL, 'file/(.*?)\/?$', 1)[0]

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

$rq3 = _HttpRequest(2, $sURL) ; Lấy source địa chỉ Referer để tìm fs_csrf

$fs_csrf = StringRegExp($rq3, 'value="(.*?)" name="fs_csrf"', 1)[0]

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

$rq4 = _HttpRequest(2, 'https://www.fshare.vn/download/get', 'fs_csrf=' & $fs_csrf & '&DownloadForm%5Bpwd%5D=&DownloadForm%5Blinkcode%5D=' & $ID_File & '&ajax=download-form&undefined=undefined', '', '', 'X-Requested-With: XMLHttpRequest')

; Tách link tải từ $rq4

$sLinkDownload = StringRegExp($rq2, '"(\Qhttp:\/\/\E.*?)"', 1)

$sLinkDownload = StringReplace($sLinkDownload[0], '\', '')

ShellExecute($sLinkDownload) ; Tải thử bằng link đã lấy được

#EndRegion