Tìm từ khóa input trong form _login-form
- Dùng FireFox mở https://www.fshare.vn
- Bấm chuột phải lên Địa chỉ Email hay Mật khẩu, chọn Inspect Element
- Dò lên trên, tìm phần tử form. Bấm chuột phải lên phần tử form, chọn Copy Outer HTML
- Dán vào một trình soạn thảo có chức năng tìm kiếm như Notepad++, Adobe Dreamweaver, MS Word…
- Tìm kiếm tất cả từ khóa input
Input fs_csrf chứa một dãy số thay đổi mỗi lần mở trang chủ fshare; LoginForm[email] chứa email, LoginForm[password] chứa mật khẩu của tài khoản FShare, LoginForm[rememberMe] mặc định có giá trị 0.
Đoạn mã sau đây mở trang FShare bằng curl và lấy giá trị fs_csrf, sau đó login
WWW='https://www.fshare.vn'
UA='Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0)'
CK=$(tempfile)
usr='fshare_usr'
pwd='fshare_pwd'
#Mở trang chủ fshare và lấy giá trị fs_csrf
csrf=$(curl -skG -c "$CK" -A "'$UA'" $WWW | grep -Po '(\b[a-f0-9]+\b)(?=" name="fs_csrf")' | head -1)
#Login
p=$(curl -skL -b $CK -c $CK -A "'$UA'" -e $WWW -d "'fs_csrf=$csrf&LoginForm[email]=$usr&LoginForm[password]=$pwd&LoginForm[rememberMe]=0'" $WWW/login)
Việc tiếp theo là kiểm tra xem p có chứa dấu hiệu cho thấy login thành công hay không, thí dụ $usr
#Nếu đã login
if [[ "$p" =~ "$usr" ]]; then
...
fi
Sau khi login thành công, file cookies $CK chứa các thông tin cần thiết về user. Dùng file cookies này trong câu lệnh curl để lấy link VIP và logout
FShare v2 dùng https. Ta cần lấy header có chứa link VIP nên không cho chuyển tiếp trang.
#Đổi http: thành https: fsLink=$(echo $fsLink | sed 's/http:/https:/') #Lấy link VIP từ $fsLink lnkVIP=$(curl -ikG -b $CK -A "'$UA'" $fsLink | grep -Po '(?<=^Location: )(.+)$') ... #Logout curl -kLG -b $CK -A "'$UA'" $WWW/logout >/dev/null 2>&1
Chú ý rằng FShare kiểm tra user-agent và referer nên cần ghi -A “‘$UA'” -e $WWW trong câu lệnh POST
Code đầy đủ
File Bash sau đây có tham số là các link FShare hay file text chứa các link FShare
Links VIP được ghi vào file fsVIP.txt
#!/bin/bash
if [[ $# -eq 0 ]]; then
echo usage: $(basename $0) link1 [link2...]
echo or $(basename $0) linkFile
exit 1
fi
WWW='https://www.fshare.vn'
UA='Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
CK='./cookies'
usr='you@mail.com'
pwd='yourPassword'
outFile='./fsVIP.txt'
p=$(curl -skLG -b "$CK" -c "$CK" -A "'$UA'" $WWW)
#Chưa login?
if ! [[ "$p" =~ "$usr" ]]; then
echo Đăng nhập...
csrf=$(echo $p | grep -Po '(\b[a-f0-9]+\b)(?=" name="fs_csrf")' | head -1)
p=$(curl -sikL -b $CK -c $CK -A "'$UA'" -e $WWW -d "fs_csrf=$csrf&LoginForm[email]=$usr&LoginForm[password]=$pwd&LoginForm[rememberMe]=1" $WWW/login)
fi
#User VIP?
if ! [[ "$p" =~ '">VIP</' ]]; then
echo 'Vui lòng đăng nhập với tài khoản VIP!'
exit 1
fi
#Danh sách link fshare
lnks="$@"
if [ -f "$lnks" ]; then
#Đổi ký tự xuống dòng bằng khoảng trắng
lnks=$(cat "$lnks" | sed -E 's/[\n\r]+/ /')
fi
for lnk in $lnks; do
#Đổi http: thành https:
lnk=$(echo $lnk | sed -e 's/http:/https:/')
#Lấy link VIP từ $lnk
lnkVIP=$(curl -iksG -b $CK -A "'$UA'" $lnk | grep -Po '(?<=^Location: )(.+)$')
if [ "$lnkVIP" == '' ]; then
#Không tìm thấy link VIP, nguyên nhân: link có mật khẩu, link folder, tài khoản đang dùng...
lnkVIP="$lnk: Lỗi!"
echo $lnkVIP
else
echo "$lnk: Xong!"
fi
#Ghi link VIP vào file
echo $lnkVIP >> $outFile
done
#Logout
curl -kLG -b $CK -A "'$UA'" $WWW/logout >/dev/null 2>&1