Example 4

HTTP Requests

Example 4

Top  Previous  Next

Lấy link tải trang Fshare (Không tài khoản):

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

 

 

Khi tải Fshare Free ta phải chờ 30s đếm ngược rất mất thời gian phải không nào ? Chỉ cần thực hiện request như bên dưới đây thì ta đã lấy được link tải một cách nhanh chóng.

 

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

 

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

 

 

·Khoan bấm vào nút Tải Miễn Phí.

 

·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 Tải Miễn Phí 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:

 

https://www.fshare.vn/download/get

 

POST /download/get 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: application/json, text/javascript, */*; q=0.01

Accept-Language: en-US

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

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

Content-Length: 148

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

DNT: 1

Connection: keep-alive

 fs_csrf=3342032daf77786afa935a036b11be73e9429ed0 &DownloadForm%5Bpwd%5D= &DownloadForm%5Blinkcode%5D=TF6JKXFF4T &ajax=download-form &undefined=undefined

→ 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à: X-Requested-With: XMLHttpRequest

 

 

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& DownloadForm%5Bpwd%5D=& DownloadForm%5Blinkcode%5D=TF6JKXFF4T& ajax=download-form

 

·Đoạn DownloadForm%5Blinkcode%5D=TF6JKXFF4T → Ta dùng các hàm xử lý String để tách TF6JKXFF4T từ link Fshare ra, ví dụ:

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

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

Nói chung là xử lý sao thì tuỳ, miễn là tách được cái ID là xong.

 

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

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

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.

 

·Nếu request thành công thì ta sẽ được kết quả trả về như sau:

{"url":"http:\/\/download801.fshare.vn\/dl\/F7b9lOq-SlmTFSL9rX2V5NvUIyQxsb2bu82uceWDuoHLPkqQKzU3lOmPypI5Q-tYgSR0+RKrOLl7mcuR\/X17-59463.iso","wait_time":30}

→ Ta phải làm thêm công đoạn StringRegExp và StringReplace để tách cái link tải ra.

 

 

7/ Hoàn thiện code

 

#include <_HttpRequest.au3>

$sURL = 'https://www.fshare.vn/file/TF6JKXFF4T/' ; Địa chỉ request và địa chỉ Referer là giống nhau

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

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

$rq1 = _HttpRequest(2, $sURL) ; 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(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ừ $rq2

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

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

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