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

Hướng dẫn [v14.0.6 - 23/7/2019] HttpRequest cho người mới bắt đầu - Ví dụ, hình ảnh 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 Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Ví dụ nào không được thým, cho iêm xin cái hình ví dụ + thông tin về máy của thým (win gì, x86 hay x64....), iêm nhờ mấy thým win khác nhau test đều chạy ổn mà nhể :v
     
  2. Hoàng Tuân

    Hoàng Tuân Thành viên
    • 8/11

    Tham gia ngày:
    9/1/16
    Bài viết:
    82
    Đã được thích:
    11
    win 7 thì bthg còn win xp thì ko đc thím ơi

    [​IMG]
     
  3. NgocNam

    NgocNam Thành viên
    • 8/11

    Tham gia ngày:
    17/11/17
    Bài viết:
    45
    Đã được thích:
    5
    Mình dùng thử v13 đăng nhập vào autoitvn.com
    Dưới đây là code của mình:

    Mã (AutoIt):

    #include<_HttpRequest.au3>

    _HttpRequest_SetSession(1)
    $data=_HttpRequest('-1|#1','http://autoitvn.com/')
    $cookie=_GetCookie($data)
    MsgBox(4096, 'Cookie',$cookie)

    $dataLogin='login=ngocnam&register=0&password=1234&cookie_check=1&redirect=%2F&_xfToken=: undefined'
    ;Thong tin login va password da thay doi
    $data=_HttpRequest('2|#1','http://autoitvn.com/login/login',$dataLogin,$cookie,'http://autoitvn.com/')
    ;$data=_HttpRequest('2|#1','http://autoitvn.com/login/login',$dataLogin)
    MsgBox(0,0,$data)
    $cookieLogin=_GetCookie($data)
    MsgBox(4096, 'Cookie',$cookieLogin)
    _HttpRequest_ClearSession(1)

    FileWrite(@ScriptDir&'/login_autoitvn.html',$data)
    ShellExecute(@ScriptDir&'/login_autoitvn.html')
    Kết quả trả về là đã login đc và lưu lại trang đã login. Tuy nhiên ở các thông báo MsgBox Cookie thì ko hiện giá trị cookie lên. Mình ko hiểu vì sao.

    Nếu ở dòng $data=_HttpRequest('-1|#1','http://autoitvn.com/') mình để lại thành $data=_HttpRequest('1|#1','http://autoitvn.com/') thì MsgBox hiện đc giá trị cookie nhưng kết quả lại ko login đc.

    Mình đã đọc kỹ file _Help chỉ nói dấu trừ (-) là để phù hợp với code của phiên bản cũ.

    Cho mình hỏi mình đã sai ở đâu đc không? Xin cảm ơn!
     
  4. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    4rum Xenforo nó có redirect sau khi Login thành công, điều đáng nói ở đây là Cookie đăng nhập chỉ xuất hiện trước khi redirect, sau khi login thành công và redirect về Trang chủ thì Cookie đăng nhập không xuất hiện nữa ?! Vì vậy nếu thým cần lấy Cookie đăng nhập để lưu lại và sử dụng cho những lần sau thì thým cần disable redirect cái đã.
    • Để lấy nhanh Cookie thì có thể để $iReturn là -1.
    • Để disable redirect thì $iReturn thêm dấu * vào.
    → $iReturn = '*-1' hoặc '-*1' cũng được, không quan trọng thứ tự dấu hiệu.

    Ta sẽ có:

    Mã (AutoIt):
    #include <_HttpRequest.au3>

    $sUsername = 'Tai Khoan'
    $sPass = 'Mat Khau'

    _HttpRequest(1, 'https://autoitvn.com/') ;4rum Xenforo thường bắt phải có Cookie ban đầu nên phải request dòng này, Cookie ban đầu sẽ được nạp vào cache.
    ;----------------------------------------------------------------
    $Cookie = _HttpRequest('*-1', 'https://autoitvn.com/login/login', 'login=' & _URIEncode($sUsername) & '&register=0&password=' & $sPass & '&cookie_check=1&redirect=%2F&_xfToken=')
    MsgBox(4096, 'Cookie', $Cookie)
    ;-----------------------------------------------------------------
    $RQ = _HttpRequest(2, 'http://autoitvn.com/', '', $Cookie)
    _HttpRequest_Test($RQ)
    Nói thêm về dấu - : ở các bản cũ, nếu $iReturn = -2 hoặc -4 thì sẽ lấy data về ở dạng Binary, ở bản mới thì $iReturn = -2 tương đương với $iReturn = 3, -4 tương đương với 5. Chỉ có vậy thôi, thým không cần quan tâm đến vụ dấu - làm gì cho mệt óc :v
     
    NgocNam thích bài này.
  5. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Đúng rồi thým, code này chỉ chạy khi máy có IE9 trở lên thôi, còn WinXp thì hình như chỉ tới IE7.
    Mà WinXP giờ cùi lắm rồi, gần phân nửa những trang https nó không request tới được. Trước kia iêm cũng yêu WinXP lắm vì nó nhẹ nhàng gọn gàng mà về sau phải dứt áo ra đi vì khả năng hỗ trợ của nó không còn nữa rồi :v
     
  6. sdvn

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

    Tham gia ngày:
    8/10/15
    Bài viết:
    7
    Đã được thích:
    13
    Mã (AutoIt):
    #include <_HttpRequest.au3>

    $formnametoken = 'csrfmiddlewaretoken='
    $site = '9soundclouddownloader.com/download-sound-track'
    $formnameurl = 'sound-url='
    $url = 'https://soundcloud.com/afkdubstep/afk-x-carbin-boss-ft-cody-ray-4'


    $rq = _HttpRequest(2, '9soundclouddownloader.com/')
    $cookie = _GetCookie()
    Local $sString = StringMid($cookie, 12, 32)
    Local $aForm = [$formnametoken & $sString & '&' & $formnameurl & $url]

    $rq1 = _HttpRequest(2, $site, $aForm, 'csrftoken=' & $sString)

    MsgBox(4096, 'Web', $rq1)


     
    Mình lấy code get link nhạc từ 1 site này , mà mãi vẫn lỗi , mod giúp mình check đc ko
     
  7. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Thým làm sai rồi, hãy xem kỹ lại Live HTTP Headers nhoé:
    Mã (Text):
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:en-US,en;q=0.8
    Content-Length:138
    Content-Type:application/x-www-form-urlencoded
    DNT:1
    Host:9soundclouddownloader.com
    Referer:http://9soundclouddownloader.com/
    Upgrade-Insecure-Requests:1
     
    Content-Type:application/x-www-form-urlencoded → Đây là phương thức POST kiểu application/x-www-form-urlencoded.

    Còn thým chơi Local $aForm=[$formnametoken & $sString & '&' & $formnameurl & $url] → cái này là POST kiểu data-form multipart rồi.

    Thým tham khảo kỹ lại file _HttpRequest_Help nhoé, xuống phần Practice, xem mục POST > application/x-www-form-urlencoded để xem các ví dụ của nó là sẽ thấy nó tương tự như câu hỏi của thým thôi, rất dễ làm:
    [​IMG]
    Và cuối cùng ta có code:
    Mã (AutoIt):
    #include <_HttpRequest.au3>

    $URL = 'https://soundcloud.com/afkdubstep/afk-x-carbin-boss-ft-cody-ray-4'
    ;--------------------------------------------------------------
    $rq1 = _HttpRequest(2, '9soundclouddownloader.com/')
    $csrfmiddlewaretoken = StringRegExp($rq1, "'csrfmiddlewaretoken' value='(.*?)'", 1)
    $rq2 = _HttpRequest(2, '9soundclouddownloader.com/download-sound-track', 'csrfmiddlewaretoken=' & $csrfmiddlewaretoken[0] & '&sound-url=' & $URL)
    ;--------------------------------------------------------------
    $Link = StringRegExp($rq2, '<a href="(.*?)".*?>Download Track', 1)
    If @error Then Exit MsgBox(4096, 'Lỗi', 'Không lấy được link')
    $Link = _HTMLDecode($Link[0])
    MsgBox(4096, 'Link tải',  $Link)
     
    [​IMG]

    Không biết thým đã biết StringRegExp chưa nên có gì không hiểu về StringRegExp trong code trên thì hỏi iêm.

    * Sửa bài viết: À, sorry thým, thật sự thì cái $Data2Send thým cũng không sai, do iêm viết Help còn thiếu sót, iêm đính chính rõ lại là tham số $Data2Send của hàm _HttpRequest nếu nạp Mảng vào thì nó tự chuyển Content-Type sang form-data/multipart nhoé. Để lần cập nhật sau iêm thêm lưu ý vào file Help :p
    Tóm lại code của thým tương đối đúng, chỉ nhầm lẫn và sai ở 1 chỗ:
    - $Data2Send cho kiểu POST www.urlen phải nạp chuỗi, không nạp mảng.
    - csrfmiddlewaretoken tìm sai, phải tìm trong source HTML mới đúng.
     
    Chỉnh sửa cuối: 22/11/17
    sdvn and sgdavid like this.
  8. anhducdnt

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

    Tham gia ngày:
    29/9/16
    Bài viết:
    26
    Đã được thích:
    9
    Mình muốn cài addon mà báo không tương thích phiên bản firefox này. Vậy phải làm sao bạn ơi?
    [​IMG]
     
  9. essered

    essered Thành viên
    • 18/23

    Tham gia ngày:
    11/9/16
    Bài viết:
    47
    Đã được thích:
    45
    ko tương thích với firefox Quantum mới là đúng rồi, bác chờ bản LHH mới, hoặc tải firefox 46 portable về chạy
     
    Huân Hoàng thích bài này.
  10. htclub

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

    Tham gia ngày:
    4/8/16
    Bài viết:
    9
    Đã được thích:
    1
    Mọi người xem hộ chút
    tại sao lại không đăng nhập được nhỉ
    Mã (Text):

    #include <_HttpRequest.au3>
    $Cookie = _HttpRequest('*-1', 'http://nova.qlbv.vn/crane/dhis-web-commons/security/login.action', 'j_username=ktbv_12014&j_password=Autoit2017')
    MsgBox(4096, 'Cookie', $Cookie)
    $RQ = _HttpRequest(2, 'http://nova.qlbv.vn/crane/dhis-web-permit/serviceGet.action?serviceGroupId=5&pageNum=1&pageSize=50000', '', $Cookie)
    _HttpRequest_Test($RQ)
     
     
  11. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Trừ khi cần lấy Cookie để lần sau xài lại hoặc những trường hợp đặc biệt như 4rum Xenforo thì bình thường thým không cần phải sử dụng mode Disable Redirect đâu, lạm dụng disable redirect thì có khi gây phản tác dụng vì nó không verify trang cần login được.

    Code chỉ cần đơn giản thế này là OK:
    Mã (AutoIt):
    #include <_HttpRequest.au3>
    _HttpRequest(0, 'http://nova.qlbv.vn/crane/dhis-web-commons-security/login.action', 'j_username=ktbv_12014&j_password=Autoit2017') ;Gửi request login và không cần lấy dữ liệu trả về nào hết
    $rq = _HttpRequest(2, 'http://nova.qlbv.vn/crane/dhis-web-permit/serviceGet.action?serviceGroupId=5&pageNum=1&pageSize=50000')
    _HttpRequest_Test($rq)

    [​IMG]
     
  12. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @htclub à, iêm vừa xem kỹ lại, code thým cũng đúng rồi, cơ mà sai URL login rồi =.="

    Đúng phải là: http://nova.qlbv.vn/crane/dhis-web-commons-security/login.action
    Trong khi thým lại là: http://nova.qlbv.vn/crane/dhis-web-commons/security/login.action

    Sửa URL lại là chạy ngon lành:

    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $Cookie = _HttpRequest('*-1', 'http://nova.qlbv.vn/crane/dhis-web-commons-security/login.action', 'j_username=ktbv_12014&j_password=Autoit2017')
    $RQ = _HttpRequest(2, 'http://nova.qlbv.vn/crane/dhis-web-permit/serviceGet.action?serviceGroupId=5&pageNum=1&pageSize=50000', '', $Cookie)
    _HttpRequest_Test($RQ)
     
    htclub thích bài này.
  13. Tran Duy

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

    Tham gia ngày:
    26/4/16
    Bài viết:
    24
    Đã được thích:
    10
    Hi bác Hoàng,
    trang này login dính cái captcha google thì có hướng nào giải quyết không bác ơi?
    https://ucoincash.co/
    thanks bác!
     
  14. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Google Captcha thì....bye bye nhoé =))
     
    Tran Duy thích bài này.
  15. Tran Duy

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

    Tham gia ngày:
    26/4/16
    Bài viết:
    24
    Đã được thích:
    10
    hehe, cho em hỏi phát nữa, khi request mà bị fail (như các lỗi 404, 403, 500..) nói chung là error thì check làm sao hả bác?
    Vì nếu server bị quá tải thì sẽ không trả lại response, nên em muốn hễ bị fail là cứ request tiếp đến khi nào OK thì thôi đó bác :)
     
  16. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Sử dụng hàm _HttpRequest_QueryHeaders với Flag 19 để get status thôi thým, mở file _HttpRequest_Help.chm đọc nội dung cái hàm đó để biết rõ chi tiết.

    Code mẫu:
    Mã (AutoIt):
    #include <_HttpRequest.au3>

    _HttpRequest(2, 'https://autoitvn.com')
    $StatusCode = _HttpRequest_QueryHeaders(19)
    MsgBox(4096, 'Status Code', $StatusCode)
    Switch $StatusCode
        Case 500, 403, 401 ;.....
            ;Làm gì đó
        Case 200
            MsgBox(4096, 'Status',  'OK')
    EndSwitch
     
  17. Tran Duy

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

    Tham gia ngày:
    26/4/16
    Bài viết:
    24
    Đã được thích:
    10
    Cám ơn bác, nhưng mình muốn nó chạy đến khi nào OK thì thôi, mình code vầy mà sao không được ta?
    Mã (AutoIt):
    $rq = _HttpRequest(2, 'http://autoitvn.com/')
    $StatusCode = _HttpRequest_QueryHeaders(19)
    While 1
       Switch $StatusCode
        Case 500, 403, 401
          $rq = _HttpRequest(2, 'http://autoitvn.com/')
          $StatusCode = _HttpRequest_QueryHeaders(19)
        Case 200
            ExitLoop
       EndSwitch
    WEnd
     
  18. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Cái rq của thým ngay từ đầu có đúng chưa đã. Nếu đúng rồi mà request nhiều lần mới bắt đầu lỗi thì thým bị chặn do request liên tục tới nó nên cơ chế chống ddos chặn thým, còn ngay từ đầu lỗi rồi thì rq bao nhiêu lần vẫn vậy do thým code sai :v
     
  19. NgocNam

    NgocNam Thành viên
    • 8/11

    Tham gia ngày:
    17/11/17
    Bài viết:
    45
    Đã được thích:
    5
    Bạn @Huân Hoàng cho mình hỏi, mình muốn vượt qua cái phần chờ 5s khi lần đầu truy cập vào https://10minutemail.net/ thì _httpreques của mình có làm đc ko nhỉ? Nếu đc thì mình cần dùng hàm nào?
    Cảm ơn bạn!
     
  20. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Đặt thêm 1 dòng _HttpRequest_BypassCloudflare ở đầu code là được nhoé thým.
    Mã (AutoIt):
    #include <_HTTPREQUEST.AU3>
    _HttpRequest_BypassCloudflare('https://10minutemail.net/')
    $rq = _HttpRequest(2, 'https://10minutemail.net/ ')
    _HttpRequest_Test($rq)
    P/S: Trang này nhớ lúc trước iêm vào là đợi 5s Cloudflare mà nhể, sao hôm nay nó bắt click Captcha :v Máy iêm bị chặn hay nó đổi phương thức truy cập trang nhể :v
     
    NgocNam thích bài này.

Chia sẻ trang này

Đang tải...