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
    Update nhoé bà con :v
     
    sgdavid thích bài này.
  2. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Sau gần 1 năm chờ đợi thì cuối cùng siêu phẩm cũng ra mắt
    Thanks a nhìu
     
  3. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    2 hàm này không chạy được a ơi
    _HttpRequest_ProxyNova_GetListCountries, _HttpRequest_ProxyNova_GetListProxies
     
  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
    2 hàm này đều trả về mảng thým à, với lại chúng được làm lại từ cái UDF của thým @kakanet, làm cho vui vậy thôi chứ không cần thiết lắm :v

    [​IMG]

    [​IMG]

     
  5. hoanglee

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

    Tham gia ngày:
    23/10/18
    Bài viết:
    2
    Đã được thích:
    0
    Có cách nào kiểm tra xem hàm _HttpRequest_SetProxy đã connect thành công k bác?
     
  6. bossroyal

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

    Tham gia ngày:
    27/6/18
    Bài viết:
    7
    Đã được thích:
    0
    [​IMG]
    cho e hỏi lỗi này sửa làm sao ạ :autoit::autoit::autoit:
     
  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
    Comment cái dòng này lại : MsgBox(4096, 'Thông báo', 'Vui lòng khởi động lại SciTe để kích hoạt hiển thị tiếng Việt cho Console')
     
  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
    Thứ 1: Tắt SciTE rồi khởi động lại vẫn bị hỏi à thým ? Nếu đúng vậy thì xoá dòng Msgbox như thým sgdavid nói, còn iêm thì bản kế cũng xoá luôn dòng đó.
    Thứ 2: Console hiển thị tiếng Việt được không hay ra ký tự lỗi ? Nếu lỗi thì thým vui lòng báo cho iêm biết đường dẫn cài SciTE của thým là gì để iêm fix bug.

    :p
     
    sgdavid and bossroyal like this.
  9. 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ì request thử lên mấy trang check ip đó thým, ví dụ:

    [​IMG]

    Nhưng thường thì connect thành công thì nó trả kết quả liền, còn không được thì nó bị đơ cho đến khi timeout thì báo lỗi thôi :v
     
  10. bossroyal

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

    Tham gia ngày:
    27/6/18
    Bài viết:
    7
    Đã được thích:
    0
    Hiện bình thường thím à, để e tất cái Msgbox xem
     
  11. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    A huanhoang giúp e cái này với , e đinh request trang mail.com để đăng ký, e get source lấy được hết mấy form rồi mà nó lòi ra cái này không có trong source
    Thanks a

    165697408816347647691391694964: 2040688034
    276708519927458758702402705075: 35b349220


    Mã (Text):
    id7_hf_0:
    z692004412:
    z1086142965:
    ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:RowGender:Field: MALE
    ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:RowBirthDate:Field:month:
    ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:RowBirthDate:Field:day:
    ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:RowBirthDate:Field:year:
    ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:abuseCity:
    ListRegistrationData:0:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:RowCountry:Field: US
    z231595374:
    ListRegistrationData:1:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:Row101:Field:SelectDomain: option0
    ListRegistrationData:2:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:panelSetPassword:RowPassword:Field:
    ListRegistrationData:2:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:panelSetPassword:RowPasswordRetype:Field:
    z897273703:
    ListRegistrationData:3:ItemRegistrationData:BorderBoxRegistrationData:panelRegistrationData:panel103:Row1031:Field:
    z1151948738:
    g-recaptcha-response:
    z1212956065:
    165697408816347647691391694964: 2040688034
    276708519927458758702402705075: 35b349220
    ButtonSubmit: 1
     
     
  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
    Không vào được :v

    [​IMG]
     
  13. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    À cái này phải fake ip mới vào được a ạ nó cấm vietnam
     
  14. haha

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

    Tham gia ngày:
    4/10/18
    Bài viết:
    8
    Đã được thích:
    1
    $rq = _HttpRequest_GoogleLogin($User, $Pswd, '96489981987-i6n9cbvlv12ok22up54mbal5ifqa97el.apps.googleusercontent.com', 'ddVxV8Cj7iLiWNJZ3xftdarN', 'https://mail.google.com')

    ConsoleWrite($rq)
    sao email và pass đúng mà k login đc vậy bro
     
  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
    Thým làm sai rồi sao ra được ? Trong file Help iêm có để nội dung các tham số rồi mà ?
    Mà cũng tại iêm cho cái ví dụ về _HttpRequest_GoogleLogin hơi đơn giản, để bản kế tiếp iêm thêm vài ví dụ _HttpRequest_GoogleLogin vào mục Practice :p

    [​IMG]


    Ví dụ 1: Đăng nhập Gmail và lấy Cookie:
    Mã (AutoIt):

    Local $Cookie = _HttpRequest_GoogleLogin($User, $Password, 'https://mail.google.com/mail/u/0/h/', -1)
    MsgBox(4096, 'Cookies',  $Cookie)

    Ví dụ 2: Có vẻ cái code của thým là muốn làm gì đó với API Gmail đúng không, nên iêm sẽ có mẫu ví dụ về lấy access_token Gmail như sau:
    (Tài liệu tham khảo tại đây: https://developers.google.com/identity/protocols/OAuth2WebServer)
    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $sEmail = ''
    $sPassword = ''
    $sClientID = '.....apps.googleusercontent.com'
    $sSecretID = ''
    $sScope = 'https://mail.google.com'

    $aToken = Google_GetAccessToken($sEmail, $sPassword, $sClientID, $sSecretID, $sScope)
    _ArrayDisplay($aToken) ;Hàm Trả về mảng: [0] là access_token và [1] là refresh_token

    Func Google_GetAccessToken($sEmail, $sPassword, $sClientID, $sSecretID, $sScope)
        #Region Lấy Exchange Code
            Local $sURL = "https://accounts.google.com/o/oauth2/auth?"
            $sURL &= "redirect_uri=" & _URIEncode("urn:ietf:wg:oauth:2.0:oob")
            $sURL &= "&scope=" & _URIEncode($sScope)
            $sURL &= "&client_id=" & $sClientID
            $sURL &= "&approval_prompt=force"
            $sURL &= "&response_type=code"
            ;-----------------------------------------------------------------------------------
            Local $rq1 = _HttpRequest_GoogleLogin($sEmail, $sPassword, $sURL)
            Local $state_wrapper = StringRegExp($rq1, 'name="state_wrapper" value="(.*?)"', 1)
            If @error Then Return SetError(1, '', '')
            Local $allowURL = StringRegExp($rq1, '"(https://accounts.google.com/o/oauth2/approval\?as=.*?)"', 1)
            If @error Then Return SetError(2, '', '')
            ;-----------------------------------------------------------------------------------
            Local $rq2 = _HttpRequest(2, StringReplace($allowURL[0], '&amp;', '&'), '_utf8=%E2%98%83&state_wrapper=' & _URIEncode($state_wrapper[0]) & '&submit_access=true')
            Local $sExchangeCode = StringRegExp($rq2, 'value="(.*?)"', 1)
            ;-----------------------------------------------------------------------------------
            If @error Then Return SetError(3, '', '')
            $sExchangeCode = $sExchangeCode[0]
        #EndRegion

        #Region Đổi Exchange Code ra access_token
            Local $__sRequest = _HttpRequest(2, _
                    'https://accounts.google.com/o/oauth2/token', _
                    'code=' & _URIEncode($sExchangeCode) & _
                    '&client_id=' & _URIEncode($sClientID) & _
                    '&client_secret=' & _URIEncode($sSecretID) & _
                    '&redirect_uri=' & _URIEncode('urn:ietf:wg:oauth:2.0:oob') & _
                    '&grant_type=authorization_code')
            If StringInStr($__sRequest, '"error"', 0, 1) Or Not StringInStr($__sRequest, '"access_token"', 0, 1) Then Return SetError(4, '', '')
            $__aToken = StringRegExp($__sRequest, '(?is)"access_token"\s?:\s?"([^"]+)".*?"refresh_token"\s?:\s?"([^"]+)"', 3)
            If @error Then Return SetError(5, '', '')
            Return $__aToken
        #EndRegion
    EndFunc
     
    [​IMG]
     
  16. haha

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

    Tham gia ngày:
    4/10/18
    Bài viết:
    8
    Đã được thích:
    1
    cảm ơn bro. mình làm đc rồi. sau bro mới hd. hehe. :)
     
  17. haha

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

    Tham gia ngày:
    4/10/18
    Bài viết:
    8
    Đã được thích:
    1
    Iêm đang request đến youtube mà html trả về 'Đã xảy ra sự cố. Vui lòng thử lại.'. Request đến mail or google thì k sao :)
     
  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
    Thým bắt request gì đó của Youtube rồi làm bình thường thôi. Ví dụ: Like 1 video.
    Ta bấm nút Like thì bắt được request sau:
    PHP:
    https://www.youtube.com/service_ajax?name=likeEndpoint

    POST /service_ajax?name=subscribeEndpoint HTTP/1.1
    Accept: */*
    X-YouTube-Client-Name: 2
    X-YouTube-Client-Version: 2.20181115
    X-Youtube-Identity-Token: QUFFLUhqa1JwZER3T1E3OVMyR1M4b211ZFBlYm9MNlFGUXw=
    X-YouTube-Page-CL: 221559584
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 622
    Cookie: YSC=J9VR3H3qq2A..................
    DNT: 1
    Connection: keep-alive
        sej=%7B%22clickTrackingParams%22%3A%22CJYBEJhNGAIiEwjO9sLq0uPeAhVSZosKHbyID5so-B0%3D%22%2C%22commandMetadata%22%3A%7B%22webCommandMetadata%22%3A%7B%22url%22%3A%22%2Fservice_ajax%22%2C%22sendPost%22%3Atrue%7D%7D%2C%22likeEndpoint%22%3A%7B%22status%22%3A%22LIKE%22%2C%22target%22%3A%7B%22videoId%22%3A%22h33aFvaH_Lw%22%7D%7D%7D&session_token=QUFFLUhqbXVubllza242eWFfTlg5ME1QTC1zZDNobkNFUXxBQ3Jtc0trUHVCampfS3RLQWltNTVNd3RXLWZ6ZklaTTM3MEJSNmdGZjFoc3VmdFQzZ2F3YXhjRnlHTW4tcXJIODFGaGFwdnFSMnU5b2l3aVZuY09qVjNOMTREclExWjdBdFBBRHd6MzI3eFdEb25xNXNabjhSSnhTY2xtRkZZU2JWM0V4UU1sNVVTR0ppV0RSSTZ5Uks3MzhwZWw2QVU0a3c%3D
    Body Data hơi khó nhìn nên ta sẽ URL Decode nó, và được:
    Mã (Text):

    sej: {"clickTrackingParams":"CJYBEJhNGAIiEwjO9sLq0uPeAhVSZosKHbyID5so-B0=","commandMetadata":{"webCommandMetadata":{"url":"/service_ajax","sendPost":true}},"likeEndpoint":{"status":"LIKE","target":{"videoId":"h33aFvaH_Lw"}}}
    session_token: QUFFLUhqbXVubllza242eWFfTlg5ME1QTC1zZDNobkNFUXxBQ3Jtc0trUHVCampfS3RLQWltNTVNd3RXLWZ6ZklaTTM3MEJSNmdGZjFoc3VmdFQzZ2F3YXhjRnlHTW4tcXJIODFGaGFwdnFSMnU5b2l3aVZuY09qVjNOMTREclExWjdBdFBBRHd6MzI3eFdEb25xNXNabjhSSnhTY2xtRkZZU2JWM0V4UU1sNVVTR0ppV0RSSTZ5Uks3MzhwZWw2QVU0a3c=
     
    => Các tham số cần tìm là: clickTrackingParams, session_token. 2 tham số này tìm bằng cách request đến trang video YT sau khi đã đăng nhập, trong đó:
    • session_token: search giá trị XSRF_TOKEN trong source html
    • clickTrackingParams: trong source có khá nhiều giá trị này, nhưng vì là request LIKE nên ta tìm clickTrackingParams ở ngay sau đoạn: "likeEndpoint":{"status":"LIKE"....
    Vậy là ta có code như sau:
    Mã (AutoIt):

    #include <_HttpRequest.au3>
    _HttpRequest_GoogleLogin($User, $Pswd,  'https://www.youtube.com')
    ;------------------------------------------------------------------------------------
    ; Ví dụ video: https://www.youtube.com/watch?v=h33aFvaH_Lw
    $VideoID = 'h33aFvaH_Lw'
    Local $URL = 'https://www.youtube.com/watch?v=' & $VideoID
    Local $RQ = _HttpRequest(2, $URL)

    $session_token = StringRegExp($RQ, '"XSRF_TOKEN":"(.*?)"', 1)[0]
    $clickTrackingParams = StringRegExp($RQ, '"likeEndpoint":{"status".*?"clickTrackingParams":"(.*?)"', 1)[0]

    $RQ = _HttpRequest(2, 'https://www.youtube.com/service_ajax?name=likeEndpoint', 'sej=%7B%22clickTrackingParams%22%3A%22' & _URIEncode($clickTrackingParams) & '%22%2C%22commandMetadata%22%3A%7B%22webCommandMetadata%22%3A%7B%22url%22%3A%22%2Fservice_ajax%22%2C%22sendPost%22%3Atrue%7D%7D%2C%22likeEndpoint%22%3A%7B%22status%22%3A%22LIKE%22%2C%22target%22%3A%7B%22videoId%22%3A%22' & $VideoID & '%22%7D%7D%7D&session_token=' & _URIEncode($session_token))
    MsgBox(4096, 'KQ',  $RQ)
    Chạy code request trên rồi vào trình duyệt và vào trang YT trên với tài khoản đã request để xác nhận là đã LIKE thành công chưa nhoé :v

    Tương tự nếu là request DISLIKE thì clickTrackingParams kiếm đằng sau "likeEndpoint":{"status":"DISLIKE"..., request Subscribe thì clickTrackingParams kiếm đằng sau "subscribeEndpoint"....

    Tuy nhiên chơi request thẳng kiểu này hơi chua, khuyên là làm bằng API YT sẽ khoẻ hơn.
     
  19. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    A huanhoang replay bài này hộ e với
    Trang mail.com này phải fake ip mới vào được a ạ
     
  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
    sgdavid thích bài này.

Chia sẻ trang này

Đang tải...