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
    @essered

    1/ Câu hỏi về zalo: Ý thým là đăng nhập trang này à ?
    iêm không chơi Zalo nên cũng không tiện thử.

    2/ Về linkvip.info: Nhờ câu hỏi này của thým nên iêm phát hiện ra một bug nhỏ về set Port của _HttpRequest. Thým tải về bản _HttpRequest ver13 (beta) đính kèm bên dưới, bản này iêm đã sửa 3 bug với nâng cấp một vài hàm + thêm Parse JSON và tương tác FTP. Thým xài đỡ cho đến khi iêm release bản hoàn thiện.

    Request trang này cơ bản là rất dễ, nhưng phải chú ý tham số $Additional_Headers phải điền Origin: http://www.linkvip.info mới có thể request thành công được → Tất cả những request mà có liên quan đến request OPTIONS đều phải thêm Header này (xem Live HTTP Headers bên dưới)

    - Live HTTP Headers:
    Mã (Text):
    http://www.linkvip.info:8001/mp3/

    OPTIONS /mp3/ HTTP/1.1
    Host: www.linkvip.info:8001
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0 Cyberfox/51.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    Access-Control-Request-Method: POST
    Access-Control-Request-Headers: content-type
    Origin: http://www.linkvip.info
    DNT: 1
    Connection: keep-alive
    -----------------------------------------
    http://www.linkvip.info:8001/mp3/

    POST /mp3/ HTTP/1.1
    Host: www.linkvip.info:8001
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0 Cyberfox/51.0
    Accept: application/json
    Accept-Language: en-US
    Accept-Encoding: gzip, deflate
    Content-Type: application/json
    Referer: http://www.linkvip.info/
    Content-Length: 77
    Origin: http://www.linkvip.info
    DNT: 1
    Connection: keep-alive
    {"url":"https://mp3.zing.vn/bai-hat/Ngung-Khoc-Cho-Nhau-Karik/ZW7FZW0B.html"}
    - Code:
    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $rq = _HttpRequest(2, 'http://www.linkvip.info:8001/mp3/', '{"url":"https://mp3.zing.vn/bai-hat/Ngung-Khoc-Cho-Nhau-Karik/ZW7FZW0B.html"}', '', 'http://www.linkvip.info/', 'Origin: http://www.linkvip.info')
    MsgBox(4096, 'KQ', $rq)
    [​IMG]
    P/S: _HttpRequest từ bản 10 trở đi là đã tự nhận biết Data2Send có phải là Json không để đổi Content-Type phù hợp rồi mà, nên thým không cần thêm vào header Content-Type:application/json chi cho mất công :))
     

    Các file đính kèm:

    zCafex and essered like this.
  2. essered

    essered Thành viên
    • 18/23

    Tham gia ngày:
    11/9/16
    Bài viết:
    47
    Đã được thích:
    45
    thanks bác nhiều, bác phản hồi nhanh quá
     
  3. emga9xkc

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

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    càng ngày càng vip bác ơi
     
  4. darknight

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

    Tham gia ngày:
    10/1/17
    Bài viết:
    23
    Đã được thích:
    3
    Bác Huân ơi. iem đăng nhập thành công hiện 302 Found rồi mà xong bên dưới nó lại redirect về trang login thế này. Trị sao đây bác.
    [​IMG]
     
  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
    Nó đăng nhập thành công rồi thì redirect về trang chủ, bình thường mà nhể, như thým đăng nhập trên trình duyệt, đăng nhập xong nó quay lại trang chủ đúng không nào :v

    Còn vì lý do nào đó mà thým không muốn bị redirect thì đơn giản chỉ việc thêm dấu * phía trước số $iReturn thôi, ví dụ:
    _HttpRequest('*1', 'http://abc', $dataLogin...)
    _HttpRequest('*2', 'http://abc', $dataLogin...)
    ----Gộp bài------

    Á, nãy mới ngủ dậy mắt nhắm mắt mở đọc nhầm, redirect về trang login chứ không phải về trang chủ =.=" Nếu vậy thì chắc thým request Login thất bại rồi.

    Code như thế này nhoé, thým check lại code của thým xem có bị sai gì không:

    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $username = 'tài khoản'
    $pass = 'mật khẩu'

    $rq1 = _HttpRequest(2, 'https://hextracoin.co/login')
    $token = StringRegExp($rq1, 'name="_token".*? value="(.*?)"', 1)[0]
    $rq2 = _HttpRequest(2, 'https://hextracoin.co/login', '_token=' & $token & '&username=' & $username & '&password=' & $pass & '&one_time_password=')
    _HttpRequest_Test($rq2)
    [​IMG]
     
    Chỉnh sửa cuối: 23/10/17
  6. darknight

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

    Tham gia ngày:
    10/1/17
    Bài viết:
    23
    Đã được thích:
    3
    Code em chiều và tối thì chạy được bình thường, đăng nhập vào được. Nhưng cứ buổi sáng chạy là bị thế bác huân ak. Em thử 2 hôm nay mới phát hiện ra.
     
  7. Tan Loc

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

    Tham gia ngày:
    22/10/17
    Bài viết:
    1
    Đã được thích:
    0
    Bác giúp em với trang steam login 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 :oops::oops:
     
  8. zCafex

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

    Tham gia ngày:
    24/3/17
    Bài viết:
    6
    Đã được thích:
    1
    ôi, chờ V13 nữa hả bác. Ngon quá bác ơi. Thank bác nhiều :autoit:
     
  9. 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
    Ai giúp e làm cái request đăng tin lên group fb có hình ảnh đi ạ
     
    Phương Simon thích bài này.
  10. shushi

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

    Tham gia ngày:
    4/11/17
    Bài viết:
    1
    Đã được thích:
    0
  11. huỳnh đủ

    huỳnh đủ Thành viên mới
    • 3/6

    Tham gia ngày:
    10/10/17
    Bài viết:
    1
    Đã được thích:
    1
    Trang https://www.myetherwallet.com/

    Mã (Javascript):
    {"method":"eth_getBalance","params":["0x7b6ca23d84c8f8f546955b849ba1bf8f83974168","pending"],"id":"d9af95cb1668f0b0f61523561fd9e24c","jsonrpc":"2.0"}

    https://www.myetherwallet.com/js/etherwallet-master.js

    var reqObj = [{ "id": parentObj.getRandomID(), "jsonrpc": "2.0", "method": "eth_getBalance", "params": [addr, 'pending'] }, { "id": parentObj.getRandomID(), "jsonrpc": "2.0", "method": "eth_gasPrice", "params": [] }, { "id": parentObj.getRandomID(), "jsonrpc": "2.0", "method": "eth_getTransactionCount", "params": [addr, 'pending'] }];


    customNode.prototype.getBalance = function (addr, callback) {
      this.post({
      method: 'eth_getBalance',
      params: [addr, 'pending']
      }, function (data) {
      if (data.error) callback({ error: true, msg: data.error.message, data: '' });else callback({ error: false, msg: '', data: { address: addr, balance: new BigNumber(data.result).toString() } });
      });

    customNode.prototype.post = function (data, callback) {
      data.id = this.getRandomID();
      data.jsonrpc = "2.0";
      this.rawPost(data, callback);

    customNode.prototype.rawPost = function (data, callback) {
      ajaxReq.http.post(this.SERVERURL, JSON.stringify(data), this.config).then(function (data) {
      callback(data.data);
      }, function (data) {
      callback({ error: true, msg: "connection error", data: "" });
      });

    data2send: dòng id mình ko biết tìm ở đâu cả id":"d9af95cb1668f0b0f61523561fd9e24c"

    - Công việc thứ 1: mình muốn tạo 100 địa chỉ ví ETH -> eth.txt (key|địa chỉ ETH)
    - Công việc thứ 2: mình muốn kiểm tra Account Balance 100 địa chỉ ví đã tạo lưu vào file eth.txt (key|địa chỉ ETH) xuất ra ->ethBalance.txt (địa chỉ ETH|Balance)
     
    Phương Simon thích bài này.
  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
    Vậy hả thým, đơn giản như đang giỡn mà cũng chả cần captcha nữa, cái captcha đó nó hù doạ =))

    [​IMG]

    Mã (AutoIt):
    #include <_HttpRequest.au3>
    $rq = _HttpRequest(2, 'http://daotao.uneti.edu.vn/ajaxpro/TraCuuThongTin,PMT.Web.PhongDaoTao.ashx', '{"currentPage":1,"maSinhVien":"","hoDem":"","Ten":"","ngaySinh":"","maLopHoc":"dhti8a3hn"}', '', 'http://daotao.uneti.edu.vn/TraCuuThongTin.aspx', 'Origin:http://daotao.uneti.edu.vn|X-AjaxPro-Method:GetDanhSachSinhVien')
    _HttpRequest_Test($rq)
    p/S: Phòng đào tạo của mấy trường đại học nó dùng chung source nguồn web đào tạo hay sao mà mẫu trường nào cũng giống nhau, nhất là cái lỗi có captcha cũng như không này thế nhể =.="
     
    kakanet thích bài này.
  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
    Nó gồm 2 phần:
    - Code upload Ảnh: áp dụng hướng dẫn Upload của iêm để làm. Sau khi up ảnh thành công thì request trả về sẽ cho ta 1 cái ID của ảnh đó.
    - Code đăng tin: Code này cũng đơn giản, nhìn vô Live HTTP Headers phát là thấy, loại bỏ bớt những cái râu ria của request nhìn thấy trên Live HTTP Headers đi cho gọn hoặc để nguyên vẫn được, trong request đó sẽ có 1 tham số để gán ID ảnh đã up.

    iêm chỉ hướng dẫn code post group với ảnh, code up ảnh thým tự nghiên cứu nhoé, trong tầm tay thôi.

    Mã (AutoIt):
    Func FB_Group_Post($Handle, $GroupID, $sContent = '', $PhotoID = '', $ReturnPostID = False)
            If Not IsArray($Handle) Then Return SetError(1, 0, False)
            If Not $sContent And Not $PhotoID Then Return SetError(2, 0, False)
            Local $isArrayPhotoID = IsArray($PhotoID), $aPhotoID, $paramPhotoID = ''
            If $PhotoID Or $isArrayPhotoID Then
                $aPhotoID = ($isArrayPhotoID ? $PhotoID : StringSplit($PhotoID, '|', 2))
                For $i = 0 To UBound($aPhotoID) - 1
                    If Not StringIsDigit($aPhotoID[$i]) Then ContinueLoop
                    $paramPhotoID &= '&photo_ids[' & $i & ']=' & $aPhotoID[$i]
                Next
            EndIf
            Local $__data = _HttpRequest(1, 'https://m.facebook.com/composer/mbasic/?av=' & $Handle[1], 'fb_dtsg=' & $Handle[2] & '&xc_message=' & _URIEncode($sContent) & $paramPhotoID & '&target=' & $GroupID & '&c_src=group' & '&referrer=group&view_post=%C4%90%C4%83ng', $Handle[0])
            If @error Or StringInStr($__data, 'Server Error') Then Return SetError(3, 0, False)
            If $ReturnPostID Then
                $__data = _HttpRequest(2, 'https://m.facebook.com/groups/' & $GroupID & '?view=group&fc=photo_upload_success&_rdr', '', $Handle[0])
                Local $PostID = StringRegExp($__data, 'top_level_post_id\.(\d+)', 1)
                If @error Then Return SetError(4, 0, False)
                Return $PostID[0]
            EndIf
            Return True
        EndFunc
    Trong đó tham số $Handle là iêm làm cho phù hợp với cái Facebook UDF, nếu thým không dùng Facebook UDF thì iêm sẽ nói rõ ra thêm là:
    - $Handle[0] là Cookie
    - $Handle[1] là UserID
    - $Handle[2] là fb_dtsg

    Ghi chú: code iêm đưa có thể Post với nhiều ảnh cùng 1 bài post, muốn post nhiều ảnh thì $PhotoID sẽ gồm nhiều ID ảnh cách nhau bằng dấu | , ví dụ $PhotoID="1234234|342234|34234..."
     
  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
    Trang này mạng iêm nó chặn rồi, load 10ph vẫn trắng

    [​IMG]
     
  15. 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
    Thks a: <3
     
  16. 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
    thím ơi, e làm cái code up ảnh r, mà sao dùng hàm của thím ko đăng đc dị :(
     
  17. 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
    Do thým Ghép code sai / Up ảnh sai / Lấy PhotoID sai... chứ code iêm vẫn hoạt động ổn định mượt mà như da em bé :D


    [​IMG]

    [​IMG]
     
  18. vanquocdat

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

    Tham gia ngày:
    12/6/17
    Bài viết:
    14
    Đã được thích:
    9
    chào anh, em sử dụng hàm _HttpRequest_SetProxy thì cả file nó chạy với proxy đó luôn, có hàm nào set proxy thành default ko anh? (Disable hàm _HttpRequest_SetProxy)
    update: đã xong vấn đề @@ bác nào cùng câu hỏi thì thêm function này vô udf rồi chạy hàm _httprequest_disableproxy() là ok, func:
    func _httprequest_disableproxy()
    Global $g___Proxy = '', $g___ProxyBypass = ''
    endfunc
     
    Chỉnh sửa cuối: 16/11/17
    Huân Hoàng thích bài này.
  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
    Thật ra thì không cần thêm hàm mới, có 2 cách đó là:
    • C1: _HttpRequest_SetProxy('') ← để rỗng là nó thành Default trở lại.
    • C2: Sử dụng phương pháp set Proxy cục bộ, ví dụ:_HttpRequest('2|%http://1.1.1.1:88', 'http://abc.com') → Chỉ _HttpRequest này là chạy với proxy này. Có thể xem thêm file Help phần _HttpRequest_SetProxy và phần giải thích $iReturn của hàm _HttpRequest để biết chi tiết hơn.
     
  20. 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
    sao cái hàm _JS_Execute ví dụ của bác chạy ko đc dị :)
     

Chia sẻ trang này

Đang tải...