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. 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
    Mình làm được rồi bác, mình thêm 1 Case là
    Cám ơn bác, giờ muốn hiển thị cái google captcha đó lên GUI được ko vậy bác? Mình làm cái form login rồi lấy cookie làm mấy cái khác thôi.

    link demo: https://wake.unixcoin.com/login
     
  2. NgocNam

    NgocNam Thành viên
    • 8/11

    Tham gia ngày:
    17/11/17
    Bài viết:
    45
    Đã được thích:
    5
    Nếu login vào bằng trình duyệt thì nó đợi 5s, còn nếu mà dùng request thì nó bắt nhập capcha. Đau đầu thật.
    Cảm ơn bạn Huân Hoàng nhé.
     
  3. 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
    code php thì đăng nhập ok
    còn code autoit thì tại sao lại không đăng nhập được nhỉ
    Mã (PHP):

        $user = array(
            'username' => $username,
            'password' => $password
        );
        $param = json_encode($user);
        $url = 'http://mydomain/api/token/take';
        $ch=curl_init($url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        $result = curl_exec($ch);
     
    Mã (AutoIt):

    $url = 'http://mydomain/api/token/take'
    $RQ = _HttpRequest(2, $url, '{"username":"username","password":"pass"}')
    _HttpRequest_Test($RQ)
     
     
  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
    Thým inbox 4rum cho iêm cái URL domain cụ thể của thým iêm mới giúp được chứ úp mở thế kia thì sao mà làm để giúp thým được ? :v :-??
     
  5. essered

    essered Thành viên
    • 18/23

    Tham gia ngày:
    11/9/16
    Bài viết:
    47
    Đã được thích:
    45
    bác @Huân Hoàng cho mình hỏi tí, mình inetgetsize 1 link tải từ driver.google mà sao file <2mb thì nó trả về kết quả tốt, nhưng >2mb thì trà về là 0, có cách nào hoặc dùng lệnh khác không bác, ví dụ:
    Mã (AutoIt):
    $url = "https://drive.google.com/uc?export=download&id=13LdcS7Y65rRp5G6wZmPxuufpe_lftSBS"
    $size = InetGetSize($url)
    MsgBox(0, "Size", "Size of file: " & $size)
     
     
  6. 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ấn đề này nếu thým search Google với từ khoá "get size file google drive" thì sẽ khó tìm ra câu trả lời nhoé bởi nếu làm theo phương pháp thông thường thì request trả về (request bởi bất cứ UDF hay hàm get file, get size nào) đều không có Content-Length → không lấy được size.

    Nhưng iêm có một mẹo nhỏ rất hữu ích này là thým request với Header Range-Byte thì nó sẽ trả về một Content-Range có chứa size của file:

    [​IMG]

    Dùng StringRegExp tách ra là xong, đơn giản hiệu quả =))

    [​IMG]

    Code mẫu:
    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $url = "https://drive.google.com/uc?export=download&id=13LdcS7Y65rRp5G6wZmPxuufpe_lftSBS"
    $rq = _HttpRequest(1, $url, '', '', '', 'Range: bytes=0-0')
    MsgBox(4096, 'Response Header',  $rq)
    $size = StringRegExp($rq, '(?m)Content-Range:.*?\/(\d+)$', 1)
    If @error Then Exit MsgBox(4096, 'Lỗi', 'Không lấy được size')
    MsgBox(4096, 'Size', $size[0] & ' bytes')
     
    zCafex and essered like this.
  7. essered

    essered Thành viên
    • 18/23

    Tham gia ngày:
    11/9/16
    Bài viết:
    47
    Đã được thích:
    45

    search google ko ra mà bác có mẹo hay quá, thanks bác nhiều
     
  8. 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
    thank bác , mình đã hiểu rõ rồi

    mình hỏi ngu 1 tí là cái link tải này mình để autoit tải về 1 thư mục mà ko đc , chắc là do cookie , bác có gợi ý nào ko
     
    Huân Hoàng thích bài này.
  9. Phương Simon

    Phương Simon Thành viên mới
    • 3/6

    Tham gia ngày:
    21/3/16
    Bài viết:
    19
    Đã được thích:
    8
    bác Huân Hoàng cho iem hỏi, iem request login tới trang linkdin.com nhưng iem request login tới chỉ có load mãi như trong hình dưới iem ko làm ăn gì dc ~~ thì mình làm thế nào để nào bác ! Tks you vinamiu

    [​IMG]
     
  10. 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
    À, sorry thým nhoé, không phải do cookie mà là do cái hàm _HTMLDecode trong UDF iêm không hiểu sao iêm kiểm tra lại thì thấy thiếu hàm, đáng lẽ là: StringSplit(BinaryToString($sChrEnt)) mà khi iêm xem trong UDF thì chỉ có StringSplit($sChrEnt) nên nó ra sai => &amp; lẽ ra phải decode ra dấu & mà nó ra rỗng => cái link tải bị decode sai :v Thým tải UDF _HttpRequest iêm mới fix bên dưới xài đỡ nhoé. Cảm ơn thým, nhờ thým mà phát hiện ra cái bug nhảm này :p

    Bên cạnh đó thằng 9soundclouddownloader.com nó mới nâng cấp lên https với nó yêu cầu phải có header Referer mới lấy link tải được nên code có chút thay đổi nhoé:

    [​IMG]

    Code:


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

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

    $Link = _HTMLDecode($InfoDownload[1])
    $FileName = $InfoDownload[0]

    ShellExecute($Link)
     

    Các file đính kèm:

    sdvn thích bài này.
  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
    iêm check thử khi login từ chính trang chủ: https://www.linkedin.com
    hoặc login từ: https://www.linkedin.com/m/login/
    thì nó đều phải qua cái request POST https://www.linkedin.com/li/track
    nên iêm có thể suy ra được phải request thêm thằng này nữa (có lẽ nó liên quan đến cái đoạn vệt sáng chạy qua chạy lại). Cơ mà data2send của nó khá phức tạp:
    Mã (Text):
    [{"eventInfo":{"topicName":"NavigationEvent","eventName":"NavigationEvent","appId":"com.linkedin.flagship3.d_web"},"eventBody":{"requestHeader":{"pageKey":"d_flagship3_login","path":"https://www.linkedin.com/m/login/","referer":null,"interfaceLocale":"en_US"},"header":{"clientApplicationInstance":{"applicationUrn":"urn:li:application:(voyager-web,voyager-web)","version":"1.1.1781","trackingId":[-50,-37,-34,-108,-95,-32,65,110,-123,-18,-51,98,-42,125,-26,124]},"pageInstance":{"pageUrn":"urn:li:page:d_flagship3_login","trackingId":"edeHFRGgR+26aHvz2Y2p6g=="},"time":1512892497414},"previousPageInstance":null,"triggerControlUrn":null,"triggerControlTrackingId":null}},{"eventInfo":{"topicName":"PageViewEvent","eventName":"PageViewEvent","appId":"com.linkedin.flagship3.d_web"},"eventBody":{"requestHeader":{"pageKey":"d_flagship3_login","path":"https://www.linkedin.com/m/login/","referer":null,"interfaceLocale":"en_US"},"header":{"pageInstance":{"pageUrn":"urn:li:page:d_flagship3_login","trackingId":"edeHFRGgR+26aHvz2Y2p6g=="},"time":1512892497418,"clientApplicationInstance":{"applicationUrn":"urn:li:application:(voyager-web,voyager-web)","version":"1.1.1781","trackingId":[-50,-37,-34,-108,-95,-32,65,110,-123,-18,-51,98,-42,125,-26,124]}},"pageType":"ajax","trackingInfo":{"0":"unknown","1":"phone_web","2":"1.1.1781","3":"UNK","4":"unknown","5":"en_US","10":"1512892497417","osVersion":"unknown","osName":"phone_web","appVersion":"1.1.1781","carrier":"UNK","deviceModel":"unknown","locale":"en_US","clientTimestamp":"1512892497417"}}},{"eventInfo":{"eventName":"ExternalTrackingPageViewEvent","appId":"com.linkedin.flagship3.d_web"},"eventBody":{"pageViewPageKey":"d_flagship3_login","pageViewPath":"/m/login/","initiator":"APP","providers":["COMSCORE"],"requestHeader":{"pageKey":"d_flagship3_login"},"samplingFraction":1}},{"eventInfo":{"topicName":"BPRClientRenderEvent","eventName":"BPRClientRenderEvent","appId":"com.linkedin.flagship3.d_web"},"eventBody":{"requestHeader":{"path":"https://www.linkedin.com/m/login/","pageKey":"d_flagship3_login","referer":null,"interfaceLocale":"en_US"},"header":{"pageInstance":{"pageUrn":"urn:li:page:d_flagship3_login","trackingId":"edeHFRGgR+26aHvz2Y2p6g=="},"time":1512892497422,"clientApplicationInstance":{"applicationUrn":"urn:li:application:(voyager-web,voyager-web)","version":"1.1.1781","trackingId":[-50,-37,-34,-108,-95,-32,65,110,-123,-18,-51,98,-42,125,-26,124]}},"bprPageInstance":{"pageUrn":"urn:li:page:bpr","trackingId":"GwwBDcahQrO49TCJXad1LQ=="},"clientPageInstance":{"pageUrn":"urn:li:page:d_flagship3_login","trackingId":"edeHFRGgR+26aHvz2Y2p6g=="}}},{"eventInfo":{"topicName":"LixTreatmentsEvent","eventName":"LixTreatmentsEvent","appId":"com.linkedin.flagship3.d_web"},"eventBody":{"requestHeader":{"path":"https://www.linkedin.com/m/login/","pageKey":"d_flagship3_login","referer":null,"interfaceLocale":"en_US"},"header":{"pageInstance":{"pageUrn":"urn:li:page:d_flagship3_login","trackingId":"edeHFRGgR+26aHvz2Y2p6g=="},"time":1512892497651,"clientApplicationInstance":{"applicationUrn":"urn:li:application:(voyager-web,voyager-web)","version":"1.1.1781","trackingId":[-50,-37,-34,-108,-95,-32,65,110,-123,-18,-51,98,-42,125,-26,124]}},"urns":[{"urnId":"","urnType":"guest","treatments":[{"experimentId":1717395,"treatmentIndex":0,"segmentIndex":1},{"experimentId":1708766,"treatmentIndex":0,"segmentIndex":2},{"experimentId":1718292,"treatmentIndex":4,"segmentIndex":1},{"experimentId":1715837,"treatmentIndex":0,"segmentIndex":1}]}]}}]
    nên cần phải tốn nhiều thời gian để phân tích đây :v thým tìm hiểu thử đi chứ iêm nhìn vô là thấy đau não rồi :))
     
    DuyMinh and Phương Simon like this.
  12. 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
    thank thím rất nhiều , one of the best mod forum in ma life

    Mã (AutoIt):
    ;====================================================
    ;
    ; Function Name:    _Getlink()
    ; Description:    Get link mp3 from soundcloud.
    ; Parameter(s):  $URLi  - Link of music from soundcloud
    ; Requirement(s):   AutoIt
    ; Return Value(s):  On Success - $aInfo[0] = Direct link mp3
    ;                                $aInfo[1] = Name of the song
    ;                   On Failure - False = Wrong url or cant get link
    ; Author(s):        HuanHoang, sdvn
    ;
    ;====================================================
    Func _Getlink($URLi)
       Local $aInfo[2]
       $rq1 = _HttpRequest(2, 'https://9soundclouddownloader.com/')
       $csrfmiddlewaretoken = StringRegExp($rq1, "'csrfmiddlewaretoken' value='(.*?)'", 1)
       $rq2 = _HttpRequest(2, 'https://9soundclouddownloader.com/download-sound-track', 'csrfmiddlewaretoken=' & $csrfmiddlewaretoken[0] & '&sound-url=' & $URLi, '', 'https://9soundclouddownloader.com/')
       ;--------------------------------------------------------------
       $InfoDownload = StringRegExp($rq2, '(?ism)<i>([^<]*?)</i>\h*\R\h*<a href="(.*?)".*?>Download Track', 3)
       If @error Then Return SetError(1, 0, False)
       $aInfo[0] = _HTMLDecode($InfoDownload[1])
       $aInfo[1] = $InfoDownload[0]
       Return $aInfo
    EndFunc
    ;====================================================
    ;End Function Get Link SoundCloud
    ;====================================================
     
    Chỉnh sửa cuối: 11/12/17
    Huân Hoàng and Tran Duy like this.
  13. 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 Vậy là đã ra nguyên nhân là do WinXP. iêm xoá bớt những cmt ở trên để tránh loãng bài nhoé. Nói tóm lại là WinHttp trên WinXP hiện giờ chỉ còn support khá ít trang https. Không chỉ WinHttp mà khi lướt web trên XP, những trang https thường cũng đều có báo lỗi: Https:MisMatch hay Https-NoRevo...gì đó, lâu quá iêm quên mất rồi :v Vấn đề WinXP iêm sẽ thêm một ghi chú ở đầu bài viết cho thým nào vẫn còn đang sử dụng.
     
  14. nightrelax

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

    Tham gia ngày:
    21/12/16
    Bài viết:
    2
    Đã được thích:
    0
    Bác @Huân Hoàng cho em hỏi
    giờ nếu muốn sử dụng 1 file lưu cookie sẵn để chạy với httpresquest nhằm bỏ qua bước login user pass lúc đầu
    thì phải làm thế nào vs httpresquest a
     
  15. 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ấu trúc _HttpRequest:
    Mã (AutoIt):
    _HttpRequest($iReturn, $sURL, $sData2Send = '', $sCookie = '', ...)
    Thým nạp cái Cookie thým đã lưu vào tham số $sCookie là xong, ví dụ:
    Mã (AutoIt):
    $Cookie = FileRead('cookie.txt')
    $data = _HttpRequest('http://abc.com', '', $Cookie)
     
    nightrelax thích bài này.
  16. nightrelax

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

    Tham gia ngày:
    21/12/16
    Bài viết:
    2
    Đã được thích:
    0
    Thanks bác, đã xử dc rồi
     
  17. kakanet

    kakanet Thành viên năng động
    • 43/45

    Tham gia ngày:
    24/2/16
    Bài viết:
    203
    Đã được thích:
    211
    Hay, ra là có tính năng truy toàn bộ domain này nữa ^^!

    [​IMG]
     
    Huân Hoàng thích bài này.
  18. kjlllam

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

    Tham gia ngày:
    21/12/17
    Bài viết:
    1
    Đã được thích:
    0
    Các bác giúp em với trang https://store.steampowered.com//login/?redir= nó có giá trị donotcache kiếm không thấy với nó mã hóa pass kiểu gì đấy em cũng không biết nữa :(
    ID pass steam cho các bác test luôn
    ID: mallljk27
    Pass: 841157602927
     
  19. 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
    - Donotcache chẳng qua là timestamp thôi, để ý thế này: nếu 1 dãy số bắt đầu bằng 15 (hiện tại là 15, sau này có thể là 16), độ dài dãy số là 10 ký tự hoặc 13 ký tự thì khả năng rất cao nó chính là timestamp.
    + Độ dài dãy số là 10 thì là timestamp lấy đến Giây.
    + Độ dài là 13 thì là timestamp lấy đến mili Giây.
    Trong UDF đã có sẵn hàm _TimeStampUNIX để lấy timestamp rồi.​

    - Còn mã hoá mật khẩu thì liên quan đến javascript tí, có thể dùng hàm _JS_Execute trong UDF để giải.

    Còn cụ thể thì thým có thể liên lạc với thým @duc https://www.facebook.com/vanducdmp, thým ấy đã làm full Steam rồi nè, bồi dưỡng vài ly cà phê thým ấy giúp cho =))
     
  20. essered

    essered Thành viên
    • 18/23

    Tham gia ngày:
    11/9/16
    Bài viết:
    47
    Đã được thích:
    45
    bác Huân Hoàng cho mình hỏi sao HttpRequest chạy trên windows server toàn báo lỗi
     

Chia sẻ trang này

Đang tải...