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. unknown

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

    Tham gia ngày:
    7/9/15
    Bài viết:
    9
    Đã được thích:
    18
    Bác Huân Hoàng giỏi quá :'(
     
    kamsamita1 thích bài này.
  2. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    [​IMG]
    Huân Hoàng, cậu sửa lại xem làm sao cho cả bản x64 cũng làm đc đi. :| cái này bị lỗi vs bản x64 native...
     
    kamsamita1 thích bài này.
  3. 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
    @tuoitre không phải lỗi đâu bạn, cái URL bạn thiếu dấu / đó mà, phải là http://mp3.zing.vn/

    Để lần Update sau mình thêm phần nếu cuối host không có / thì tự thêm / vào :D
     
    kamsamita1 and DragonTiger like this.
  4. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    nếu cho dấu xoẹt vào thì lại không hiện ra gì cả cậu àh ;))
     
    kamsamita1 thích bài này.
  5. majinbuu419

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

    Tham gia ngày:
    25/9/16
    Bài viết:
    3
    Đã được thích:
    2
    @Huân Hoàng
    Quá đã.
    StringRegExp
    Bổ sung thêm thằng này nha Anh! (?:a|b|c|d|......)
    html.*?(?:jpg|png|html) =====Trả về html+....+ đuôi là jpg hoặc png hoặc html
     
    kamsamita1 thích bài này.
  6. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Thanks a nhiệt tình quá.
    Cái winhttp này get site sài ipv6 chậm nhỉ, a update tiếp đi a
     
    kamsamita1 thích bài này.
  7. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    E thực hành thử login trang này mà mãi không được a giúp e với


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

    $KQ = _HttpRequest(2, 'http://fcine.net/login', '', '', '', 'Connection: keep-alive')
    $Token = StringRegExp($KQ, '\"csrfKey"\svalue\=\"(.*?)\"', 1)[0]
    $Token2 = StringRegExp($KQ, '\"plupload"\svalue\=\"(.*?)\"', 1)[0]

    ;$info = 'login__standard_submitted=1&csrfKey=' & $Token & '&ref=aHR0cDovL2ZjaW5lLm5ldC8=&MAX_FILE_SIZE=124780544&plupload=' & $Token2 & '&auth=test&password=123456&remember_me=0';

    $KQ2 = _HttpRequest(2, 'http://fcine.net/login', 'login__standard_submitted=1&csrfKey=' & $Token & '&ref=aHR0cDovL2ZjaW5lLm5ldC8=&MAX_FILE_SIZE=124780544&plupload=' & $Token2 & '&auth=test&password=123456&remember_me=0', '', 'http://fcine.net', 'Connection: keep-alive')

    ;FileWrite('a.html',$KQ)
    ConsoleWrite($KQ2)

     
     
    kamsamita1 thích bài này.
  8. 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
    @sgdavid Trang bạn đưa rất hay, mình mới xem thử gửi nhận request của trang này, nó không phải là login thuần tuý mà login kiểu Upload mới ghê chứ :)) 10ph nữa mình sẽ hoàn thành bài hướng dẫn cho trang này, chờ tí nhoé :3
     
    kamsamita1 and sgdavid like this.
  9. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Thảo nào đêm qua e ngồi cả đêm mày mò mà không được ,cái này nó lại sài ipv6 nên get hơi chậm
     
    kamsamita1 thích bài này.
  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
    *** Code này sử dụng _HttpRequest phiên bản rất cũ, dài dòng, đã thêm code mới sử dụng _HttpRequest ver12 nằm ở cuối comment

    Thấy get Cookie cuối cũng nhanh mà nhỉ, tầm 2, 3s mà ? :p

    Ta thấy:
    3 request chính của trang http://fcine.net/login là:

    http://fcine.net/login

    GET /login HTTP/1.1
    Host: fcine.net
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:48.0) Gecko/20100101 Firefox/48.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    DNT: 1
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1

    HTTP/1.1 301 Moved Permanently
    Date: Tue, 04 Oct 2016 06:00:09 GMT
    Content-Type: ;charset=UTF-8
    Content-Length: 20
    Connection: keep-alive
    Set-Cookie: __cfduid=d8c758e4397002a58d45f7bce39cf5a211475560809; expires=Wed, 04-Oct-17 06:00:09 GMT; path=/; domain=.fcine.net; HttpOnly
    Set-Cookie: ips4_IPSSessionFront=`; path=/; HttpOnly
    Content-Encoding: gzip
    Location: http://fcine.net/login/
    Cache-Control: no-cache, no-store, must-revalidate
    Pragma: no-cache
    Expires: 0
    X-Frame-Options: SAMEORIGIN
    x-content-type-options: nosniff
    X-XSS-Protection: 1; mode=block
    Alt-Svc: h2=":443"; ma=60
    Server: cloudflare-nginx
    CF-RAY: 2ec66974818c3102-SIN
    ----------------------------------------------------------
    http://fcine.net/login/

    GET /login/ HTTP/1.1
    Host: fcine.net
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:48.0) Gecko/20100101 Firefox/48.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    DNT: 1
    Cookie: __cfduid=d8c758e4397002a58d45f7bce39cf5a211475560809; ips4_IPSSessionFront=j5mtpramodaqgti2cqb8jhsck0
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1

    HTTP/1.1 200 OK
    Date: Tue, 04 Oct 2016 06:00:09 GMT
    Content-Type: text/html;charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    X-XSS-Protection: 0, 1; mode=block
    X-Frame-Options: SAMEORIGIN
    x-content-type-options: nosniff
    Alt-Svc: h2=":443"; ma=60
    Server: cloudflare-nginx
    CF-RAY: 2ec6697522383102-SIN
    Content-Encoding: gzip
    ----------------------------------------------------------
    http://fcine.net/login/

    POST /login/ HTTP/1.1
    Host: fcine.net
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:48.0) Gecko/20100101 Firefox/48.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    DNT: 1
    Referer: http://fcine.net/login/
    Cookie: __cfduid=d8c758e4397002a58d45f7bce39cf5a211475560809; ips4_IPSSessionFront=j5mtpramodaqgti2cqb8jhsck0; ips4_ipsTimezone=Asia/Jakarta; ips4_hasJS=true; _ga=GA1.2.1611624482.1475561143; _gat=1
    Alt-Used: fcine.net:443
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    Content-Type: multipart/form-data; boundary=---------------------------211258704552
    Content-Length: 1046
    -----------------------------211258704552
    Content-Disposition: form-data; name="login__standard_submitted"

    1
    -----------------------------211258704552
    Content-Disposition: form-data; name="csrfKey"

    c767cafc8bf03da4e3a0dd56aff7af95
    -----------------------------211258704552
    Content-Disposition: form-data; name="ref"

    aHR0cDovL2ZjaW5lLm5ldC8=
    -----------------------------211258704552
    Content-Disposition: form-data; name="MAX_FILE_SIZE"

    124780544
    -----------------------------211258704552
    Content-Disposition: form-data; name="plupload"

    c51eb27ecac662e18150b3fdf7fc168e
    -----------------------------211258704552
    Content-Disposition: form-data; name="auth"

    test
    -----------------------------211258704552
    Content-Disposition: form-data; name="password"

    123456
    -----------------------------211258704552
    Content-Disposition: form-data; name="remember_me"

    0
    -----------------------------211258704552
    Content-Disposition: form-data; name="remember_me_checkbox"

    1
    -----------------------------211258704552--

    HTTP/2.0 301 Moved Permanently
    Date: Tue, 04 Oct 2016 06:00:20 GMT
    Content-Type: ;charset=UTF-8
    Content-Length: 20
    Set-Cookie: ips4_member_id=3829; expires=Tue, 11-Oct-2016 06:00:20 GMT; Max-Age=604800; path=/; httponly
    Set-Cookie: ips4_member_id=3829; expires=Tue, 11-Oct-2016 06:00:20 GMT; Max-Age=604800; path=/; httponly
    Set-Cookie: ips4_pass_hash=b1d015967172e2e47438e9e4c496c2ec; expires=Tue, 11-Oct-2016 06:00:20 GMT; Max-Age=604800; path=/; httponly
    Content-Encoding: gzip
    Location: http://fcine.net/?_fromLogin=1
    Cache-Control: no-cache, no-store, must-revalidate
    Pragma: no-cache
    Expires: 0
    X-Frame-Options: SAMEORIGIN
    x-content-type-options: nosniff
    X-XSS-Protection: 1; mode=block
    Server: cloudflare-nginx
    CF-RAY: 2ec669b23eea1147-SIN
    X-Firefox-Spdy: h2

    Ta đoán được:
    - Request thứ nhất là để lấy Cookie của trang này.
    Mã (AutoIt):
    $KQ1 = _HttpRequest(1, 'http://fcine.net/login', '', '', '', 'Upgrade-Insecure-Requests: 1|DNT: 1')
    $Cookie = _GetCookie($KQ1)
    - Request thứ 2 là để lấy Token csrfKey và plupload.
    Mã (AutoIt):
    $KQ2 = _HttpRequest(2, 'http://fcine.net/login', '', $Cookie, '', 'Upgrade-Insecure-Requests: 1|DNT: 1')
    $Token = StringRegExp($KQ2, '"csrfKey" value="(.*?)"', 1)[0]
    $Token2 = StringRegExp($KQ2, '"plupload" value="(.*?)"', 1)[0]
    - Request cuối POST: không phải post kiểu thông thường, hãy để ý: Content-Type: multipart/form-data; boundary= => đây là dạng Upload, xem phần <III> bài hướng dẫn để nắm về Upload.
    Dữ liệu upload thì nhìn rất dài nhưng thực tế cũng đơn giản thôi, lấy ví dụ của phần III rồi thay các dữ kiện vào, ta được:
    Mã (AutoIt):
    $TenDangNhap = 'test'
    $MatKhau = '123456'
    $sBoundary = _WinHttpBoundaryGenerator()
    $CDFAN = 'Content-Disposition: form-data; name='
    $xd = @CRLF & @CRLF
    ;---------------------------------------------
    $sDataToSend = $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"login__standard_submitted"' & $xd & '1'
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"csrfKey"' & $xd & $Token
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"ref"' & $xd & 'aHR0cDovL2ZjaW5lLm5ldC8='
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"MAX_FILE_SIZE"' & $xd & '124780544'
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"plupload"' & $xd & $Token2
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"auth"' & $xd & $TenDangNhap
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"password"' & $xd & $MatKhau
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"remember_me"' & $xd & '0'
    $sDataToSend &= @CRLF & $sBoundary & @CRLF
    $sDataToSend &= $CDFAN & '"remember_me_checkbox"' & $xd & '1'
    $sDataToSend &= @CRLF & $sBoundary & '--'
    MsgBox(4096, 'Data2Send', $sDataToSend)
    OK, các bước chuẩn bị cho Login đã hoàn thành, gửi request login thôi:
    Mã (AutoIt):
    $KQ3 = _HttpRequest(1, 'http://fcine.net/login', $sDataToSend, $Cookie, 'http://fcine.net/login/', 'Upgrade-Insecure-Requests: 1|DNT: 1|Alt-Used: fcine.net:443', '', True, $sBoundary)
    => Từ dữ liệu trả về của request trên mình dùng hàm _GetCookie để lấy cookie đăng nhập và dùng cookie này để get source những gì liên quan đến trang này. ;;)

    [​IMG]




    -----------------Code sau đây áp dụng _HttpRequest ver12 trở lên----------------
    Từ phiên bản _HttpRequest ver12 trở đi code POST multipart/form-data trở nên cực kỳ gọn nhẹ, với chỉ vài dòng so với mấy chục dòng so với trước:

    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $TenDangNhap = 'test'
    $MatKhau = '123456'

    $KQ1 = _HttpRequest(2, 'http://fcine.net/login')
    $Token = StringRegExp($KQ1, '"csrfKey" value="(.*?)"', 1)[0]
    $Token2 = StringRegExp($KQ1, '"plupload" value="(.*?)"', 1)[0]
    MsgBox(4096, 'Test Token', 'csrfKey = ' & $Token & @CRLF & 'plupload = ' & $Token2)

    Local $aForm = ['login__standard_submitted=1', 'csrfKey=' & $Token, 'ref=', 'MAX_FILE_SIZE=124780544', 'plupload=' & $Token2, 'auth=' & $TenDangNhap, 'password=' & $MatKhau, 'remember_me=1', 'remember_me_checkbox=1']
    $KQ2 = _HttpRequest(2, 'http://fcine.net/login', $aForm)
    _HttpRequest_Test($KQ2)
     
    kamsamita1 and sgdavid like this.
  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
    À quên, Cookie dữ liệu đăng nhập cuối là nối chuỗi của cái Cookie KQ1 với Cookie KQ3 nhoé -.-
     
    kamsamita1 and sgdavid like this.
  12. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Quá tuyệt với cảm ơn anh
     
    kamsamita1 thích bài này.
  13. Minh Công

    Minh Công Thành viên mới
    • 1/6

    Tham gia ngày:
    11/10/16
    Bài viết:
    2
    Đã được thích:
    2
    kamsamita1 thích bài này.
  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
    @Minh Công Có 1 số trang https không nhận được giá trị trả về, mình đã từng thử set các Option của WinHTTP cũng như hỏi trên Group FB AutoIT nhưng vẫn chưa có lời giải đáp, không hiểu vì sao. Nên vấn đề này mình không thể giải đáp được. Chờ cao nhân từ Group FB giải quyết thôi, khi đó mình sẽ update sau. :|


    Update: Trang vlink.vn đã request được ở các _HttpRequest ver10 trở lên
     
    Chỉnh sửa cuối: 15/10/17
    kamsamita1 and Minh Công like this.
  15. Minh Công

    Minh Công Thành viên mới
    • 1/6

    Tham gia ngày:
    11/10/16
    Bài viết:
    2
    Đã được thích:
    2
    Vâng em cảm ơn ))
     
    kamsamita1 thích bài này.
  16. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    kamsamita1 thích bài này.
  17. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    Bác Huân cho em hỏi : em get sources về mà nó ko ra tiếng việt mà ra cái này : Truyện được yêu thÃch ... thế mình phải làm gì để đưa ra gui nó hiện tiếng việt hả bác ??
     
    kamsamita1 thích bài này.
  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
    @sgdavid Bạn mở tab REFERENCE thì hầu như nó đã hướng dẫn cặn kẽ rồi, ví dụ như hình dưới (https://developers.google.com/youtube/v3/docs/commentThreads/list)
    [​IMG]

    HTTP request
    GET https://www.googleapis.com/youtube/v3/commentThreads
    Parameters
    The following table lists the parameters that this query supports. All of the parameters listed are query parameters.
    part, allThreadsRelatedToChannelId... là những tham số gán vào URL cần request, nối với nhau bằng ký tự &

    Ta thấy:
    - Required parameters: bắt buộc phải nối vào URL : part
    - Filters (specify exactly one of the following parameters): phải nối ít nhất 1 trong những tham số được yêu cầu sau đây: allThreadsRelatedToChannelId, channelId...
    - Optional parameters: có cũng được, không có cũng không sao, tuỳ mục đích của mình.

    => _HttpRequest($iReturn, 'https://www.googleapis.com/youtube/v3/commentThreads&part=auditDetails&videoId=<Video ID>')

    Ngoài ra nếu có yêu cầu Authorization thì bạn phải thêm vào biến $iAddition API Key, Access Token....
     
    kamsamita1 and sgdavid like this.
  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
    kamsamita1 thích bài này.
  20. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Thanks a
     
    kamsamita1 thích bài này.

Chia sẻ trang này

Đang tải...