Lấy link VIP FShare v2 bằng curl (cập nhật 28/1/15)

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

Screenshot 2014-11-29 11.47.52
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-agentreferer 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

Leave a Comment

Filed under Software

Leave a Reply