1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

[Update9-20/1/2017] [Hướng dẫn người mới làm quen WinHTTP] Ví dụ, hình ảnh, các bước làm chi tiết

Thảo luận trong 'Hướng dẫn - bài tập căn bản' bắt đầu bởi Huân Hoàng, 13/3/16.

  1. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    @enjoyedtvn 3 hàm _HttpRequest_CreateDataFormSimple, _HttpRequest_ClearCookies với _HttpRequest_Authorization mình chỉ mới viết thêm thử, chưa test nhiều nên chắc không chạy ổn ấy, từ từ sẽ cập nhật sau :p:p:p
     
    enjoyedtvn thích bài này.
  2. enjoyedtvn

    enjoyedtvn Thành viên mới
    • 1/6

    Tham gia ngày:
    17/7/16
    Bài viết:
    11
    Đã được thích:
    0
    Hóng :D
     
  3. duc

    duc Thành viên mới
    • 1/6

    Tham gia ngày:
    28/2/16
    Bài viết:
    2
    Đã được thích:
    0
    @Huân Hoàng :D kaka hơi khó hiểu :D thím làm 1 code dễ dễ hiểu ý :D
     
  4. Nguyễn Việt Hoàng

    Nguyễn Việt Hoàng Thành viên mới
    • 1/6

    Tham gia ngày:
    5/12/16
    Bài viết:
    3
    Đã được thích:
    0
    @Huân Hoàng mình có viết một tool để auto reg Nick Zing nhưng phải chiếm chuột với bàn phím. Giờ mình muốn nó auto ẩn thôi, kiểu tự gửi thông tin đến Zing để đăng kí, nếu có captcha thì báo về để mình nhập. Vậy mình có thể dùng code như thế nào nhỉ? Nếu có thời gian bạn có thể code mẫu cho mình phần gửi thông tin được không? Cám ơn bạn nhiều :)
     
  5. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    Đăng ký acc Zing dễ lắm, đọc xong phần 2 của bài hướng dẫn là có thể tự làm được rồi mà :D Dạo này mình bận chạy Grab nên cũng không hứng thú với việc viết code lập trình nữa, mình trích cái code đăng ký Zing từ chương trình Chơi ZingPlay full màn hình của mình để bạn tham khảo, chưa bao gồm tình huống hiện captcha khi thực hiện đăng ký nhiều lần, bạn có thể tìm hiểu thêm để hoàn thiện code bạn cần: ;)

    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $test = _Create_NewAccZing('HuanHoang', 'huan101hoang102', 'huanhoang')
    MsgBox(4096, @error, $test)


    Func _Create_NewAccZing($fullname, $user, $pass, $ngay_sinh = 1, $thang_sinh = 1, $nam_sinh = 2000, $gioi_tinh = 0)
        Local $Host = 'https://id.zing.vn/v2'
        Local $apiKey = 'apikey=92140c0e46c54994812403f564787c14'
        Local $sURL = $Host & '/register?' & $apiKey & '&pid=38&next=' & $Host & '/infosetting?' & $apiKey & '&pid=38'
        Local $dataPost = $apiKey & '&next=' & $Host & '/infosetting?' & $apiKey & '&pid=38&type=regbyacc' & '&fullname=' & _URIEncode($fullname) & '&account=' & _URIEncode($user) & '&pwd=' & _URIEncode($pass) & '&re_pwd=' & $pass & '&dob=' & $ngay_sinh & '&mob=' & $thang_sinh & '&yob=' & $nam_sinh & '&gender=' & $gioi_tinh
        Local $_register = _HttpRequest(2, $sURL, $dataPost, _HttpRequest(-1, $sURL))
        If @error Or Not $_register Then Return SetError(1, 0, 'Không thể thực hiện đăng ký Tài Khoản mới')
        Select
            Case StringInStr($_register, 'Tên đăng nhập không hợp lệ', 1, 1, 20000)
                Return SetError(2, 0, 'Tên đăng nhập này không hợp lệ. Phải không dấu, 8 ký tự trở lên bao gồm chữ và số')
            Case StringInStr($_register, 'Tên đăng nhập đã tồn tại', 1, 1, 20000)
                Return SetError(3, 0, 'Tên đăng nhập này đã tồn tại')
            Case StringInStr($_register, 'Mật khẩu từ 6 đến 32 ký tự', 1, 1, 20000)
                Return SetError(4, 0, 'Mật khẩu phải từ 6 đến 32 ký tự, không dấu')
            Case StringInStr($_register, 'regcaptcha', 1, 1)
                Return SetError(5, 0, 'Vui lòng đợi 30 phút tiếp theo để tạo Tài Khoản mới')
        EndSelect
        Return SetError(0, 0, 'Đăng ký Tài Khoản Zing mới thành công')
    EndFunc
     
    Nguyễn Việt Hoàng thích bài này.
  6. Nguyễn Việt Hoàng

    Nguyễn Việt Hoàng Thành viên mới
    • 1/6

    Tham gia ngày:
    5/12/16
    Bài viết:
    3
    Đã được thích:
    0
    @Huân Hoàng Cám ơn bạn:), cho mình hỏi thêm cái vụ hiện captcha thì dùng hàm như thế nào để lấy token cho phù hợp vậy vì token random, với lại dùng LHH thì thấy có 2 token lận :p

    [​IMG]

    Thanks :)
     
  7. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    Bạn đừng nghĩ nó phức tạp, chú ý phần lấy ảnh captcha và phần POST để reg acc là nhận ra ngay:

    1/ GET ảnh captcha:
    https://captcha2.zing.vn/captcha2/getcaptcha?publicKey=92140c0e46c54994812403f564787c14&token=7810a8c0fea4fe09adab69c611bc725a9549a128dc0839eb0babe2a719b25d8c1ee99488eae3147d122a87826c6d7e9ed5c0d725e2e57e51d26bb28d0095b65eaf5e3a4b05366d81ba2f1c98bb32d89a

    2/ POST data để reg acc:
    apikey=92140c0e46c54994812403f564787c14..................&gender=1&token=7810a8c0fea4fe09adab69c611bc725a9549a128dc0839eb0babe2a719b25d8c1ee99488eae3147d122a87826c6d7e9ed5c0d725e2e57e51d26bb28d0095b65eaf5e3a4b05366d81ba2f1c98bb32d89a&veryfied_code=66W3UP

    => Ứng với 1 Token thì sẽ là 1 mã captcha tương ứng
    => Dữ liệu cần post chỉ cần điền đúng mã captcha ứng với token là xong, chả cần biết nó request ra bao nhiêu cái token đi nữa :v
    Vậy ta có hàm tạo acc khi bị dính Captcha như sau:
    Mã (AutoIt):
    Func _Create_NewAccZing_Captcha($fullname, $user, $pass, $ngay_sinh = 1, $thang_sinh = 1, $nam_sinh = 2000, $gioi_tinh = 0)
        Local $apiKey = '92140c0e46c54994812403f564787c14'
        $TokenCaptcha = _HttpRequest(2, 'https://captcha2.zing.vn/captcha2/gettoken?publicKey=' & $apiKey & '&callback=zmCore.js' & Random(111111, 999999, 1)) ;<- con số sau zmCore.js đơn giản chỉ là số random để không bị trùng captcha
        $TokenCaptcha = StringRegExp($TokenCaptcha, '"token":"(.*?)"', 1)
        If @error Then Return SetError(1)
        $TokenCaptcha = $TokenCaptcha[0]

        #Region <Bạn có thể thay đoạn code hiện ảnh và điền captcha dưới đây thành code hiện trên GUI tuỳ bạn>
            InetGet('https://captcha2.zing.vn/captcha2/getcaptcha?publicKey=' & $apiKey & '&token=' & $TokenCaptcha, @DesktopDir & '\captcha.png')
            ShellExecute(@DesktopDir & '\captcha.png')
            $Ma_Captcha = InputBox('Captcha', 'Hãy nhập captcha nhìn thấy:')
        #EndRegion

        Local $sURL = 'https://id.zing.vn/v2/register?apikey=' & $apiKey & '&pid=38&next=https%3A%2F%2Fid.zing.vn%2Fv2%2Finfosetting%3Fapikey%3D' & $apiKey & '%26pid%3D38'
        Local $dataPost = 'apikey=' & $apiKey & '&next=https://id.zing.vn/v2/infosetting?' & $apiKey & '&pid=38&type=regbyacc' & '&fullname=' & _URIEncode($fullname) & '&account=' & _URIEncode($user) & '&pwd=' & _URIEncode($pass) & '&re_pwd=' & _URIEncode($pass) & '&dob=' & $ngay_sinh & '&mob=' & $thang_sinh & '&yob=' & $nam_sinh & '&gender=' & $gioi_tinh & '&token=' & $TokenCaptcha & '&veryfied_code=' & $Ma_Captcha
        Local $_register = _HttpRequest(2, $sURL, $dataPost)
        If @error Or Not $_register Then Return SetError(1, 0, 'Không thể thực hiện đăng ký Tài Khoản mới')
        Select
            Case StringInStr($_register, 'Tên đăng nhập không hợp lệ', 1, 1, 20000)
                Return SetError(2, 0, 'Tên đăng nhập này không hợp lệ. Phải không dấu, 8 ký tự trở lên bao gồm chữ và số')
            Case StringInStr($_register, 'Tên đăng nhập đã tồn tại', 1, 1, 20000)
                Return SetError(3, 0, 'Tên đăng nhập này đã tồn tại')
            Case StringInStr($_register, 'Mật khẩu từ 6 đến 32 ký tự', 1, 1, 20000)
                Return SetError(4, 0, 'Mật khẩu phải từ 6 đến 32 ký tự, không dấu')
            Case StringInStr($_register, 'regcaptcha', 1, 1)
                Return SetError(5, 0, 'Vui lòng đợi 30 phút tiếp theo để tạo Tài Khoản mới')
        EndSelect
        Return SetError(0, 0, 'Đăng ký Tài Khoản Zing mới thành công')
    EndFunc

    Kết hợp với hàm _Create_NewAccZing(...) khi không bị captcha ta được:
    _Create_NewAccZing(...)
    If @error = 5 Then ;có captcha
    _Create_NewAccZing_Captcha(...)​
    Endif
     
    Nguyễn Việt Hoàng thích bài này.
  8. Nguyễn Việt Hoàng

    Nguyễn Việt Hoàng Thành viên mới
    • 1/6

    Tham gia ngày:
    5/12/16
    Bài viết:
    3
    Đã được thích:
    0
    @Huân Hoàng Cám ơn bạn nhiều :) Mình cứ nghĩ mỗi lần gửi request thì token thay đổi :p, với mình không để ý đến cái callback=zmCore.js :p

    [​IMG]

    Chúc bạn chạy Grab vui ;)
     
  9. Kenzir

    Kenzir Thành viên mới
    • 1/6

    Tham gia ngày:
    2/12/16
    Bài viết:
    2
    Đã được thích:
    0
    Cho mình hỏi trang mình cần làm nó có 3 dòng Set cookie thì code thế nào? @@
    Với cái Local để làm gì vậy bạn.
     
  10. Kenzir

    Kenzir Thành viên mới
    • 1/6

    Tham gia ngày:
    2/12/16
    Bài viết:
    2
    Đã được thích:
    0
    code mình bị thay vì login vào web a thì nó lại trả trang a/xxx báo sai pass @@. Copy qua máy khác thì chạy bình thường là sao nhỉ
     
  11. hacker.001

    hacker.001 Thành viên mới
    • 1/6

    Tham gia ngày:
    31/8/16
    Bài viết:
    3
    Đã được thích:
    0
    mình muốn get content của trang kia 5s 1 lần thì sao bác
     
  12. ntprohd

    ntprohd Thành viên mới
    • 3/6

    Tham gia ngày:
    21/1/16
    Bài viết:
    10
    Đã được thích:
    1
    bạn Huân Hoàng làm cái hướng dẫn login vào google bằng winhttp đi
     
  13. dechut

    dechut Thành viên mới
    • 3/6

    Tham gia ngày:
    1/8/16
    Bài viết:
    4
    Đã được thích:
    1
    bài viết quá hay , cảm ơn bác nhiều lắm :D
     
  14. Andy Law

    Andy Law Thành viên mới
    • 1/6

    Tham gia ngày:
    14/1/17
    Bài viết:
    6
    Đã được thích:
    0
    mới coi video của bác trên youtube nè, tks bác nhiều nhé, có gì nhờ bác chỉ dạy anh em thêm !
     
  15. Andy Law

    Andy Law Thành viên mới
    • 1/6

    Tham gia ngày:
    14/1/17
    Bài viết:
    6
    Đã được thích:
    0
    ủa, mình like rồi mà ta , sao vẫn bị :

    ** Nội dung ẩn: Bạn phải nhấn 'Like' trước khi bạn có thể xem các dữ liệu ẩn chứa ở đây. **
     
  16. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    @Andy Law à, cái chức năng đó 4rum bị lỗi rồi bạn, tuy nhiên nếu like rồi thì bạn click vào dòng "** Nội dung ẩn: Bạn phải nhấn 'Like' trước khi bạn có thể xem các dữ liệu ẩn chứa ở đây. **" nó vẫn nhảy đến link tải được =))
     
  17. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    Update lần 8 ợ, không biết có lỗi gì hay còn gì cần bổ sung không, nhưng nói chung đến giờ vẫn tạm ổn :p
     
  18. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    Phát hiện 1 bug nhảm, lại update =.= :|:|:|
     
  19. tuoitre

    tuoitre Thành viên
    • 8/11

    Tham gia ngày:
    15/9/15
    Bài viết:
    37
    Đã được thích:
    5
    Bác cho em hỏi, tại sao em get cookies lần 2 lại bị lỗi ạ =.=''
    Mã (Text):

    #include <_HttpRequest.au3>
    $url = 'http://ttvnol.com'
    $url_login = 'http://ttvnol.com/login'
    $uname = ''
    $upass = ''
    $data ='login='&_URIEncode($uname)&'&register=0&password='&_URIEncode($upass)&'&cookie_check=1&_xfToken=&redirect=http%3A%2F%2Fttvnol.com%2F'
    $KQ1 = _HttpRequest(1, $url)
    $sCookie1 = _GetCookie($KQ1)
    $KQ2 = _HttpRequest(1, $url_login,$data, $sCookie1, $url, 'Connection: keep-alive')
    $sCookie2 = _GetCookie($KQ2)
    If @error Then Exit
    $KQ3 = _HttpRequest(2, $url, '', $sCookie2)
    _FileWrite_Test($KQ3)
     
    p/s : tớ tìm ra lỗi rồi , http://ttvnol.com/login là trang đăng nhập, nhưng phải gõ http://ttvnol.com/login/login thì nó mới đăng nhập đc.
     
    Chỉnh sửa cuối: 20/1/17 lúc 19:08
  20. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 63/68

    Tham gia ngày:
    29/9/15
    Bài viết:
    250
    Đã được thích:
    412
    @tuoitre

    Đây, đã hoàn thành, lưu ý cái request thứ 1, đây là 1 điểm lạ của cái trang này :v

    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $uname = ''
    $upass = ''
    _HttpRequest(1, 'http://ttvnol.com/login/?&_xfRequestUri=%2F&_xfNoRedirect=1&_xfResponseType=json') ;Không biết cái GET này có chức năng gì nhưng phải có nó mới ra được session đúng, không có dòng này thì cái session sai dẫn đến đăng nhập thất bại
    $KQ1 = _HttpRequest(1, 'http://ttvnol.com/login/login', 'login=' & _URIEncode($uname) & '&register=0&password=' & _URIEncode($upass) & '&cookie_check=1&_xfToken=&redirect=http%3A%2F%2Fttvnol.com')
    $sCookie = _GetCookie($KQ1)
    If @error Then Exit MsgBox(4096, 0, 'Fail')
    $KQ2 = _HttpRequest(2, 'http://ttvnol.com/', '', $sCookie)
    _FileWrite_Test($KQ2)
    [​IMG]
     

Chia sẻ trang này

Đang tải...