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

Source Login Xenforo đơn giản với IE

Thảo luận trong 'Chia sẻ mã nguồn' bắt đầu bởi Tungtata, 30/10/15.

  1. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    Tham gia thảo luận bài viết Login kết hợp PHP của bạn Jkey C Phong
    có bàn về việc tích hợp login Xenforo vào AutoIT
    Dưới đây là 1 cách. Tất nhiên chỉ là đoạn code đơn giản và nếu để tăng tính bảo mật và chuyên nghiệp thì các bạn tùy biến thêm.
    Tích hợp đăng nhập xenforo hoàn toàn có thể sử dụng để đăng nhập phần mềm bằng tài khoản forum có sẵn.
    [​IMG]

    Source
    Mã (AutoIt):

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiStatusBar.au3>
    #include <IE.au3>
    #include <String.au3>
    #Region ### START Koda GUI section ### Form=
    $Form2 = GUICreate("[aKiD]Login AutoITvn.com", 309, 90, -1, -1)
    GUICtrlCreateLabel("Username", 8, 8, 76, 17)
    $Input1 = GUICtrlCreateInput("", 88, 8, 121, 21)
    GUICtrlCreateLabel("Password", 8, 40, 76, 17)
    $Input2 = GUICtrlCreateInput("", 88, 40, 121, 21, 0x0020)
    $Button1 = GUICtrlCreateButton("Login", 224, 8, 75, 49, 0x0001)
    $Stt = _GUICtrlStatusBar_Create($Form2)
    GUISetState(@SW_SHOW)
    _GUICtrlStatusBar_SetText($Stt, 'Idle')
    #EndRegion ### END Koda GUI section ###

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button1
                login()
        EndSwitch
    WEnd

    Func login()
        $user = GUICtrlRead($Input1)
        $pass = GUICtrlRead($Input2)
        If $user == '' Or $pass == '' Then Return -1
        _GUICtrlStatusBar_SetText($Stt, 'Logging in...')
        $oIE = _IECreate('http://autoitvn.com/login',0,0)
        $oForm = _IEGetObjById($oIE, 'pageLogin')
        $oUser = _IEGetObjById($oForm, 'ctrl_pageLogin_login')
        $oPass = _IEGetObjById($oForm, 'ctrl_pageLogin_password')
        _IEFormElementSetValue($oUser, $user)
        _IEFormElementSetValue($oPass, $pass)
        _IEFormSubmit($oForm)
        $PageSource = _IEBodyReadHTML($oIE)
        ClipPut($PageSource)
        If StringInStr($PageSource, '<span class="brc_currency_style_1">') Then
            _GUICtrlStatusBar_SetText($Stt, 'Success. Account: ' & _StringBetween($PageSource, '<strong class="accountUsername">', '</strong>')[0] & ' have ' & _StringBetween($PageSource, '<span class="brc_currency_style_1">', '</span>')[0] & ' credit')
            $logout = _StringBetween($PageSource, 'href="logout/', '"')[0]
            _IENavigate ($oIE,'http://autoitvn.com/logout/'&$logout )
            _IEQuit($oIE)
        Else
            _GUICtrlStatusBar_SetText($Stt, 'Login failed')
        EndIf
    EndFunc   ;==>login
     
     
    Chỉnh sửa cuối: 30/10/15
  2. Jkey C Phong

    Jkey C Phong Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    7/9/15
    Bài viết:
    96
    Đã được thích:
    2,461
    Nơi ở:
    Thành phố Hồ Chí Minh
    Mới viết, bắt chước theo bác trên, sử dụng Object WinHttp
    Các bạn sử dụng UDF bên dưới nhé, do mình có thay đổi vài chỗ trong UDF WinHttpObj.au3
    Mã (AutoIt):

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinHttpObj.au3>

    Opt("GuiOnEventMode", 1)

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Đăng nhập forum Autoitvn.com", 403, 131, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    $Label1 = GUICtrlCreateLabel("Tài khoản", 8, 10, 88, 26)
    GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
    $Label2 = GUICtrlCreateLabel("Mật khẩu", 8, 50, 84, 26)
    GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
    $Input1 = GUICtrlCreateInput("", 96, 8, 297, 29)
    GUICtrlSetFont(-1, 14, 400, 0, "Times New Roman")
    $Input2 = GUICtrlCreateInput("", 96, 48, 297, 29, BitOR($GUI_SS_DEFAULT_INPUT, $ES_PASSWORD))
    GUICtrlSetFont(-1, 14, 400, 0, "Times New Roman")
    $Button1 = GUICtrlCreateButton("Đăng Nhập", 8, 88, 385, 33)
    GUICtrlSetOnEvent($Button1, '_Login')
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
         Case $Button1
           _Login()
       EndSwitch
    WEnd

    Func _Login()
       Local $User = GUICtrlRead($Input1)
       Local $Pass = GUICtrlRead($Input2)
       If $User = '' Or $Pass = '' Then
         MsgBox(16, 'Thông báo', 'Bạn chưa nhập tài khoản hoặc mật khẩu!')
         Return False
       EndIf
       $Post = 'login=' & urlEncode($User) & '&register=0&password=' & urlEncode($Pass) & '&cookie_check=0&redirect=%2F&_xfToken='
       $PostData = makeHttpRequest('http://autoitvn.com/login/login' & '?' & $Post, 1)
       $Match = StringRegExp($PostData[2], "Tài khoản có tên '(.*?)' không tồn tại trong hệ thống.", 0)
       If $Match == 1 Then
         MsgBox(16, 'Thông báo', 'Tài khoản ' & $User & ' không có thật')
       Else
         $Match = StringRegExp($PostData[2], 'Mật khẩu bạn nhập không đúng. Xin hãy thử lại.', 0)
         If $Match == 1 Then
           MsgBox(16, 'Thông báo', 'Mật khẩu của bạn nhập không đúng!')
         Else
           MsgBox(0, 'Thông báo', 'Đăng nhập thành công!')
         EndIf
       EndIf
    EndFunc  ;==>_Login

    Func _Exit()
       Exit
    EndFunc  ;==>_Exit
    Link: http://pastebin.com/ADj22sxu

    Mã (AutoIt):
    Global $cookies[1][2]
    Func makeHttpRequest($lnk, $post = 0, $cookie = '', $refer = '', $ignorecookies = 0, $redir = 0)
        $method = "GET"
        $weblink = StringSplit($lnk, '?')
        ;addText($weblink[2],$hListBox)
        If $post = 1 Then
            $method = "POST"
            $linklink = $weblink[1]
            $poststring = $weblink[2]
        Else
            $linklink = $lnk
        EndIf
        $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
        If $redir = 0 Then
            $oHTTP.Option(6) = False
        EndIf
        $oHTTP.Open($method, $linklink, False)
        $oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0")
        $oHTTP.SetRequestHeader("Accept-Language", "vi-VN,vi;q=0.8,en-US;q=0.5,en;q=0.3")
        If StringLen($refer) > 1 Then
            $oHTTP.SetRequestHeader("Referer", $refer)
        EndIf
        If StringLen($cookie) > 1 Then
            $oHTTP.SetRequestHeader("Cookie", $cookie)
        EndIf
        If $post = 1 Then
            $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
            $oHTTP.SetRequestHeader("Content-Length", StringLen($poststring))
            $oHTTP.Send($poststring)
        Else
            $oHTTP.Send()
        EndIf
        $oHTTP.WaitForResponse
        $HeaderResponses = $oHTTP.GetAllResponseHeaders()
        If $ignorecookies = 0 Then
            ; Handle Cookies
            $array = StringRegExp($HeaderResponses, 'Set-Cookie: (.+)\r\n', 3)
            ;$cookies = ''
            For $i = 0 To UBound($array) - 1
                ; Add all cookies to a single string, and then clean it up.
                $cook = $array[$i] & ';'
                ; Removing parts we do not use..
                $cook = StringRegExpReplace($cook, "( path| domain| expires)=[^;]+", "")
                $cook = StringRegExpReplace($cook, " HttpOnly", "")
                $cook = StringRegExpReplace($cook, "[;]{2,}", ";")
                $cook1 = StringSplit($cook, ";")
                For $k = 1 To $cook1[0]
                    If StringInStr($cook1[$k], "=") Then
                        $cook2 = StringSplit(StringReplace($cook1[$k], " ", ""), "=")
                        If $cookies[0][0] == "" Then
                            $cookies[0][0] = $cook2[1]
                            $cookies[0][1] = $cook2[2]
                        Else
                            $inserted = 0
                            For $j = 0 To UBound($cookies) - 1
                                If $cook2[1] == $cookies[$j][0] Then
                                    $cookies[$j][1] = $cook2[2]
                                    $inserted = 1
                                ElseIf ($j == (UBound($cookies) - 1)) And ($inserted == 0) Then
                                    ReDim $cookies[UBound($cookies) + 1][2]
                                    $cookies[UBound($cookies) - 1][0] = $cook2[1]
                                    $cookies[UBound($cookies) - 1][1] = $cook2[2]
                                EndIf
                            Next
                        EndIf
                    EndIf
                Next
            Next
        EndIf
        Dim $ret[4]
        If StringInStr($HeaderResponses, "Location:") <> 0 Then
            $ret["0"] = $oHTTP.GetResponseHeader("Location")
            $ret["1"] = 1
        Else
            $ret["0"] = ""
            $ret["1"] = 0
        EndIf
        $ret["2"] = $oHTTP.Responsetext
        ;$ret["method"] = $method
        $ret["3"] = $oHTTP.GetAllResponseHeaders()
        Return $ret
    EndFunc   ;==>makeHttpRequest
    ;function to encode url for websurfing
    Func URLEncode($urlText)
        $url = ""
        For $i = 1 To StringLen($urlText)
            $acode = Asc(StringMid($urlText, $i, 1))
            Select
                Case ($acode >= 48 And $acode <= 57) Or _
                        ($acode >= 65 And $acode <= 90) Or _
                        ($acode >= 97 And $acode <= 122)
                    $url = $url & StringMid($urlText, $i, 1)
                Case $acode = 32
                    $url = $url & "+"
                Case Else
                    $url = $url & "%" & Hex($acode, 2)
            EndSelect
        Next
        Return $url
    EndFunc   ;==>URLEncode
    ;function to make cookies from array
    Func mkCookies()
        $rt = ""
        For $j = 0 To UBound($cookies) - 1
            $rt = $rt & $cookies[$j][0] & "=" & $cookies[$j][1]
            If $j <> (UBound($cookies) - 1) Then
                $rt = $rt & "; "
            EndIf
        Next
        Return $rt
    EndFunc   ;==>mkCookies

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

    Local $Host = "autoitvn.com"
    Local $User = ''
    Local $Pass = ''
    Local $PostData = 'login=' & __WinHttpURLEncode($User) & '&register=0&password=' &  __WinHttpURLEncode($Pass) & '&remember=0&cookie_check=0&_xfToken=&redirect=http%3A%2F%2Fautoitvn.com%2F'
    Local $hOpen = _WinHttpOpen('',
    Local $hConnect = _WinHttpConnect($hOpen, $Host)
    Local $hRequest = _WinHttpOpenRequest($hConnect, "POST", '/login/login', 'HTTP/1.1')
    _WinHttpAddRequestHeaders($hRequest, 'Host: autoitvn.com')
    _WinHttpAddRequestHeaders($hRequest, 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0')
    _WinHttpAddRequestHeaders($hRequest, 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
    _WinHttpAddRequestHeaders($hRequest, 'Accept-Language: vi-vn,vi;q=0.8,en-us;q=0.5,en;q=0.3')
    _WinHttpAddRequestHeaders($hRequest, 'Accept-Encoding: gzip, deflate')
    _WinHttpAddRequestHeaders($hRequest, 'DNT: 1')
    _WinHttpAddRequestHeaders($hRequest, 'Referer: http://autoitvn.com/login')
    _WinHttpAddRequestHeaders($hRequest, 'Connection: keep-alive')
    _WinHttpAddRequestHeaders($hRequest, 'Content-Length: ' & StringLen($PostData))
    _WinHttpSendRequest($hRequest, 'Content-Type: application/x-www-form-urlencoded', $PostData)
    __WinHttpURLEncode(
    If (_WinHttpReceiveResponse($hRequest)==1) Then
            Local $Header = _WinHttpQueryHeaders($hRequest)
            Local $Data = _WinHttpSimpleReadData($hRequest, 2)
            ConsoleWrite($Header)
            _WriteHtml(BinaryToString(_ZLIB_GZUncompress($Data),4))
    EndIf

    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

    Func _WriteHtml($Data)
            Local $hFOpen = FileOpen(@ScriptDir &"\hocautoit.html", 2+8+256)
            FileWrite($hFOpen, $Data)
            FileClose($hFOpen)
            ShellExecute(@ScriptDir &"\hocautoit.html")
    EndFunc
     
    Chỉnh sửa cuối: 31/10/15
    Phan Dong and Huân Hoàng like this.
  3. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    Cái của bác @aKiD login chậm lắm
    còn của bác @Jkey C Phong thì lỗi nhé bác ^^ em cũng đã từng viết như của bác đây ròi
     
    Phan Dong thích bài này.
  4. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    [​IMG]
     
    Phan Dong thích bài này.
  5. Jkey C Phong

    Jkey C Phong Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    7/9/15
    Bài viết:
    96
    Đã được thích:
    2,461
    Nơi ở:
    Thành phố Hồ Chí Minh
    Bên mình chạy bình thường?!
    Bên bác bị lỗi gì???
    Bên mình test, sai pass, sai tài khoản đều hiển thị đầy đủ mà!
     
    Phan Dong thích bài này.
  6. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    Phan Dong thích bài này.
  7. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    [​IMG]

    dùng bất kỳ nick nào :3
     
    Phan Dong thích bài này.
  8. Jkey C Phong

    Jkey C Phong Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    7/9/15
    Bài viết:
    96
    Đã được thích:
    2,461
    Nơi ở:
    Thành phố Hồ Chí Minh
    [​IMG]
    Chấm hỏi luôn -_-
     
    Phan Dong thích bài này.
  9. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    kiểm tra lại đi bác :v em chả dùng đc
     
    Phan Dong thích bài này.
  10. Jkey C Phong

    Jkey C Phong Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    7/9/15
    Bài viết:
    96
    Đã được thích:
    2,461
    Nơi ở:
    Thành phố Hồ Chí Minh
    Bác FileWrite thằng $PostData[2] xem coi nó có ra tiếng Việt không hay là ra mấy cái ?
     
    Phan Dong thích bài này.
  11. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    mình chỉ đưa ra 1 example mẫu để đưa ra ý tưởng, các bạn làm cho forum nào phải tự phát triển và cải thiên chứ :-<
     
    Phan Dong and Jkey C Phong like this.
  12. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    bác set pass giúp em cái nick này , login fb đôi khi khó chịu lắm
     
    Phan Dong thích bài này.
  13. Con Cáo Cắn Con Cu

    Con Cáo Cắn Con Cu Thành viên mới
    • 3/6

    Tham gia ngày:
    25/10/16
    Bài viết:
    3
    Đã được thích:
    4
    e thấy hầu như login failed
     
    kamsamita1 thích bài này.
  14. meocon

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

    Tham gia ngày:
    5/12/16
    Bài viết:
    16
    Đã được thích:
    20
    Cám ơn bài viết của bác aKID và Jkey C Phong.

    - Script của bác aKID chạy tốt
    - Script thứ nhất của bác J.C.Phong (sử dụng Object WinHttp) chạy tốt và nhanh hơn nữa.
    - Script thứ nhì của bác J.C.Phong (sử dụng UDF WinHttp) thì bị lỗi ở 2 dòng sau:

    - Dòng thứ 8:
    Local $hOpen = _WinHttpOpen('', <== thiếu tham số

    - Dòng thứ 21:
    __WinHttpURLEncode( <== thiếu tham số

    nhờ bác coi lại và update cho nó đầy đủ, cám ơn bác nhiều.
     
    kamsamita1 and ghost like this.
  15. ghost

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

    Tham gia ngày:
    18/1/17
    Bài viết:
    4
    Đã được thích:
    3
    bác cho e tham khảo code đc k
     
    kamsamita1 thích bài này.
  16. meocon

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

    Tham gia ngày:
    5/12/16
    Bài viết:
    16
    Đã được thích:
    20
    Code ở 2 bài viết đầu tiên đó bạn.
     
    kamsamita1 thích bài này.
  17. phuong11111

    phuong11111 Thành viên
    • 18/23

    Tham gia ngày:
    7/1/17
    Bài viết:
    51
    Đã được thích:
    54
    @@ ko login đc nó chỉ tự lấy string sẵn thôi
     
  18. hoangtieubao

    hoangtieubao Thành viên
    • 8/11

    Tham gia ngày:
    31/5/17
    Bài viết:
    41
    Đã được thích:
    11
    Thích cái GUI của aKID thôi... Còn mấy cái kia không cần thiết :p
     

Chia sẻ trang này

Đang tải...