• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[VB.NET]Spider Web - Mã nguồn 1 Web Browse

Mã nguồn các chương trình tiện ích

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

[VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi clarkkent » T.Bảy 28/06/2008 6:19 pm

Tên chương trình: Spider Web V2.0
Ngôn ngữ lập trình: VB.NET
Tác giả: Nguyễn Trung Tín sưu tầm
Chức năng: Spider Web - Mã nguồn 1 Web Browse. Giúp các bạn làm quen với Control WebBrowse...

Tập tin đính kèm
SpiderWebV2.0.zip
Spider Web - Mã nguồn 1 Web Browse
(733.43 KiB) Đã tải 3433 lần


• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

thuongquoc
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Ba 11/08/2009 4:00 pm
Đến từ: Lai Vung - Đồng Tháp
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi thuongquoc » T.Sáu 28/08/2009 1:07 pm

Thay WebBrowser Control mặc định bằng cái này cho "pro" xiu. Code dưới đây do mình sưu tầm trên codeproject.com

Mã: Chọn hết

  1. Imports System
  2. Imports System.Text
  3. Imports System.Windows.Forms
  4. Imports System.ComponentModel
  5. Imports System.Collections.Generic
  6. Imports System.Runtime.InteropServices
  7. Imports System.Security.Permissions
  8. <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
  9. <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
  10. Public Class exBrowser
  11.     Inherits System.Windows.Forms.WebBrowser
  12. #Region " COM Imports Etc..."
  13.     <StructLayout(LayoutKind.Sequential)> _
  14. Public Structure OLECMDTEXT
  15.         Public cmdtextf As UInt32
  16.         Public cwActual As UInt32
  17.         Public cwBuf As UInt32
  18.         Public rgwz As Char
  19.     End Structure
  20.     <StructLayout(LayoutKind.Sequential)> _
  21.     Public Structure OLECMD
  22.         Public cmdID As Long
  23.         Public cmdf As UInt64
  24.     End Structure
  25.     <ComImport(), Guid("b722bccb-4e68-101b-a2bc-00aa00404770"), _
  26.     InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
  27.     Public Interface IOleCommandTarget
  28.         Sub QueryStatus(ByRef pguidCmdGroup As Guid, ByVal cCmds As UInt32, _
  29.             <MarshalAs(UnmanagedType.LPArray, SizeParamIndex:=1)> ByVal prgCmds As OLECMD, _
  30.             ByRef pCmdText As OLECMDTEXT)
  31.         Sub Exec(ByRef pguidCmdGroup As Guid, ByVal nCmdId As Long, _
  32.             ByVal nCmdExecOpt As Long, ByRef pvaIn As Object, _
  33.             ByRef pvaOut As Object)
  34.     End Interface
  35.     Private cmdGUID As New Guid(&HED016940, -17061, _
  36.   &H11CF, &HBA, &H4E, &H0, &HC0, &H4F, &HD7, &H8, &H16)
  37.  
  38.  
  39. #Region " Commands Enumeration "
  40.     Enum oCommands As Long
  41.         Options
  42.         Find = 1
  43.         ViewSource = 2
  44.         ID_FILE_SAVEAS = 32771
  45.         ID_FILE_PAGESETUP = 32772
  46.         ID_FILE_IMPORTEXPORT = 32774
  47.         ID_FILE_PRINTPREVIEW = 32776
  48.         ID_FILE_NEWIE = 32779
  49.         ID_FILE_NEWMAIL = 32780
  50.         PID_FILE_NEWINTERNETCALL = 32781
  51.         ID_FILE_ADDTRUST = 32782
  52.         ID_FILE_ADDLOCAL = 32783
  53.         DLCTL_BGSOUNDS = &H40
  54.         DLCTL_DLIMAGES = &H10
  55.         DLCTL_DOWNLOADONLY = &H800
  56.         DLCTL_FORCEOFFLINE = &H10000000
  57.         DLCTL_NO_BEHAVIORS = &H800
  58.         DLCTL_NO_CLIENTPULL = &H20000000
  59.         DLCTL_NO_DLACTIVEXCTLS = &H400
  60.         DLCTL_NO_FRAMEDOWNLOAD = &H1000
  61.         DLCTL_NO_JAVA = &H100
  62.         DLCTL_NO_METACHARSET = &H10000
  63.         DLCTL_NO_RUNACTIVEXCTLS = &H200
  64.         DLCTL_NO_SCRIPTS = &H80
  65.         DLCTL_OFFLINE = DLCTL_OFFLINEIFNOTCONNECTED
  66.         DLCTL_OFFLINEIFNOTCONNECTED = &H80000000
  67.         DLCTL_PRAGMA_NO_CACHE = &H4000
  68.         DLCTL_RESYNCHRONIZE = &H2000
  69.         DLCTL_SILENT = &H40000000
  70.         DLCTL_URL_ENCODING_DISABLE_UTF8 = &H20000
  71.         DLCTL_URL_ENCODING_ENABLE_UTF8 = &H40000
  72.         DLCTL_VIDEOS = &H20
  73.     End Enum
  74.  
  75. #End Region
  76.  
  77. #End Region
  78.  
  79.     'Just a little easier way to get at it.
  80.     Public ReadOnly Property CurrentURL() As String
  81.         Get
  82.             Return Me.Document.Url.ToString
  83.         End Get
  84.     End Property
  85.  
  86.     Public Sub New()
  87.         MyBase.New()
  88.     End Sub
  89.  
  90. #Region " Dialogs "
  91.  
  92.     Public Sub ShowOpen()
  93.         Dim cdlOpen As New OpenFileDialog
  94.         Try
  95.             cdlOpen.Filter = "HTML Files (*.htm)|*.htm|HTML Files (*.html)|*.html|TextFiles" & _
  96.                 "(*.txt)|*.txt|Gif Files (*.gif)|*.gif|JPEG Files (*.jpg)|*.jpeg|" & _
  97.                 "PNG Files (*.png)|*.png|Art Files (*.art)|*.art|AU Fles (*.au)|*.au|" & _
  98.                 "AIFF Files (*.aif|*.aiff|XBM Files (*.xbm)|*.xbm|All Files (*.*)|*.*"
  99.  
  100.             cdlOpen.Title = " Open File "
  101.             cdlOpen.ShowDialog()
  102.  
  103.             If cdlOpen.FileName > Nothing Then
  104.                 Me.Navigate(cdlOpen.FileName)
  105.             End If
  106.         Catch ex As Exception
  107.             Throw New Exception(ex.Message.ToString)
  108.         End Try
  109.     End Sub
  110.  
  111.     Public Sub ShowSource()
  112.  
  113.         Dim cmdt As IOleCommandTarget
  114.         Dim o As Object = Nothing
  115.         Dim oIE As Object = Nothing
  116.         Try
  117.             cmdt = CType(Me.Document.DomDocument, IOleCommandTarget)
  118.             cmdt.Exec(cmdGUID, oCommands.ViewSource, 1, o, o)
  119.  
  120.         Catch ex As Exception
  121.             Throw New Exception(ex.Message.ToString, ex.InnerException)
  122.         Finally
  123.             cmdt = Nothing
  124.         End Try
  125.     End Sub
  126.  
  127.     Public Sub ShowFindDialog()
  128.         Dim cmdt As IOleCommandTarget
  129.         Dim o As Object = Nothing
  130.         Dim oIE As Object = Nothing
  131.         Try
  132.             cmdt = CType(Me.Document.DomDocument, IOleCommandTarget)
  133.             cmdt.Exec(cmdGUID, oCommands.Find, 0, o, o)
  134.  
  135.         Catch ex As Exception
  136.             Throw New Exception(ex.Message.ToString, ex.InnerException)
  137.         Finally
  138.             cmdt = Nothing
  139.         End Try
  140.     End Sub
  141.  
  142.     Public Sub AddToFavorites(Optional ByVal strURL As String = "", Optional ByVal strTitle As String = "")
  143.         Dim oHelper As Object = Nothing
  144.         Try
  145.             oHelper = New ShellUIHelper
  146.             oHelper.AddFavorite(Me.Document.Url.ToString, Me.DocumentTitle.ToString)
  147.         Catch ex As Exception
  148.             Throw New Exception(ex.Message.ToString)
  149.         End Try
  150.         If oHelper IsNot Nothing AndAlso Marshal.IsComObject(oHelper) Then
  151.             Marshal.ReleaseComObject(oHelper)
  152.         End If
  153.     End Sub
  154.  
  155.     Public Sub ShowOrganizeFavorites()
  156.         Dim helper As Object = Nothing
  157.         Try
  158.             helper = New ShellUIHelper()
  159.             helper.ShowBrowserUI("OrganizeFavorites", 0)
  160.         Finally
  161.             If helper IsNot Nothing AndAlso Marshal.IsComObject(helper) Then
  162.                 Marshal.ReleaseComObject(helper)
  163.             End If
  164.         End Try
  165.     End Sub
  166.  
  167.     Public Sub SendToDesktop()
  168.         Dim helper As Object = Nothing
  169.         Try
  170.             helper = New ShellUIHelper()
  171.             helper.AddDesktopComponent(Me.Document.Url.ToString, "website")
  172.         Finally
  173.             If helper IsNot Nothing AndAlso Marshal.IsComObject(helper) Then
  174.                 Marshal.ReleaseComObject(helper)
  175.             End If
  176.         End Try
  177.     End Sub
  178.     Public Sub ShowInternetOptions()
  179.         Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0", vbNormalFocus)
  180.     End Sub
  181.     Public Sub ShowPrivacyReport()
  182.         Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,2", vbNormalFocus)
  183.     End Sub
  184. #End Region
  185. #Region " Extended "
  186.     <ComImport(), _
  187.         Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"), _
  188.         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch), _
  189.         TypeLibType(TypeLibTypeFlags.FHidden)> _
  190.         Public Interface DWebBrowserEvents2
  191.  
  192.         <DispId(250)> _
  193.         Sub BeforeNavigate2(<[In](), MarshalAs(UnmanagedType.IDispatch)> ByVal pDisp As Object, _
  194.         <InAttribute(), MarshalAs(UnmanagedType.BStr)> ByRef URL As String, _
  195.         <InAttribute()> ByRef flags As Object, _
  196.         <InAttribute(), MarshalAs(UnmanagedType.BStr)> ByRef targetFrameName As String, _
  197.         <InAttribute()> ByRef postdata As Object, _
  198.         <InAttribute(), MarshalAs(UnmanagedType.BStr)> ByRef headers As String, _
  199.         <InAttribute(), OutAttribute()> ByRef cancel As Boolean)
  200.         <DispId(273)> _
  201.         Sub NewWindow3(<InAttribute(), MarshalAs(UnmanagedType.IDispatch)> ByVal pDisp As Object, _
  202.         <InAttribute(), OutAttribute()> ByRef cancel As Boolean, _
  203.         <InAttribute()> ByRef Flags As Object, _
  204.         <InAttribute(), MarshalAs(UnmanagedType.BStr)> ByRef UrlContext As String, _
  205.         <InAttribute(), MarshalAs(UnmanagedType.BStr)> ByRef Url As String)
  206.  
  207.     End Interface
  208.  
  209.     Public Enum NWMF
  210.         NWMF_UNLOADING = &H1&
  211.         NWMF_USERINITED = &H2&
  212.         NWMF_FIRST_USERINITED = &H4&
  213.         NWMF_OVERRIDEKEY = &H8&
  214.         NWMF_SHOWHELP = &H10&
  215.         NWMF_HTMLDIALOG = &H20&
  216.         NWMF_FROMPROXY = &H40&
  217.     End Enum
  218.  
  219.     Private cookie As AxHost.ConnectionPointCookie
  220.     Private wevents As WebBrowserExtendedEvents
  221.  
  222.     Protected Overrides Sub CreateSink()
  223.         MyBase.CreateSink()
  224.         wevents = New WebBrowserExtendedEvents(Me)
  225.         cookie = New AxHost.ConnectionPointCookie(Me.ActiveXInstance, wevents, GetType(DWebBrowserEvents2))
  226.     End Sub
  227.  
  228.     Protected Overrides Sub DetachSink()
  229.         If Not cookie Is Nothing Then
  230.             cookie.Disconnect()
  231.             cookie = Nothing
  232.         End If
  233.         MyBase.DetachSink()
  234.     End Sub
  235.     Public Delegate Sub WebBrowserNavigatingExtendedEventHandler(ByVal sender As Object, ByVal e As WebBrowserNavigatingExtendedEventArgs)
  236.     Public Event NavigatingExtended As WebBrowserNavigatingExtendedEventHandler
  237.     Public Delegate Sub WebBrowserNewWindowExtendedEventHandler(ByVal sender As Object, ByVal e As WebBrowserNewWindowExtendedEventArgs)
  238.     Public Event NewWindowExtended As WebBrowserNewWindowExtendedEventHandler
  239.     Protected Friend Sub OnNavigatingExtended(ByVal Url As String, ByVal Frame As String, ByVal Postdata As Byte(), ByVal Headers As String, ByRef Cancel As Boolean)
  240.         Dim e As WebBrowserNavigatingExtendedEventArgs = New WebBrowserNavigatingExtendedEventArgs(Url, Frame, Postdata, Headers)
  241.         RaiseEvent NavigatingExtended(Me, e)
  242.         Cancel = e.Cancel
  243.     End Sub
  244.     Protected Friend Sub OnNewWindowExtended(ByVal Url As String, ByRef Cancel As Boolean, ByVal Flags As NWMF, ByVal UrlContext As String)
  245.         Dim e As WebBrowserNewWindowExtendedEventArgs = New WebBrowserNewWindowExtendedEventArgs(Url, UrlContext, Flags)
  246.         RaiseEvent NewWindowExtended(Me, e)
  247.         Cancel = e.Cancel
  248.     End Sub
  249.     Public Overloads Sub Navigate2(ByVal URL As String)
  250.         MyBase.Navigate(URL)
  251.     End Sub
  252. #End Region
  253.  
  254. #Region " Extended Event Classes "
  255.     Friend Class WebBrowserExtendedEvents
  256.         Inherits System.Runtime.InteropServices.StandardOleMarshalObject
  257.         Implements DWebBrowserEvents2
  258.         Private m_Browser As exBrowser
  259.  
  260.         Public Sub New(ByVal browser As exBrowser)
  261.             m_Browser = browser
  262.         End Sub
  263.         Public Sub BeforeNavigate2(ByVal pDisp As Object, ByRef URL As String, ByRef flags As Object, ByRef targetFrameName As String, ByRef postData As Object, ByRef headers As String, ByRef cancel As Boolean) Implements DWebBrowserEvents2.BeforeNavigate2
  264.             m_Browser.OnNavigatingExtended(URL, targetFrameName, CType(postData, Byte()), headers, cancel)
  265.         End Sub
  266.         Public Sub NewWindow3(ByVal pDisp As Object, ByRef Cancel As Boolean, ByRef Flags As Object, ByRef UrlContext As String, ByRef Url As String) Implements DWebBrowserEvents2.NewWindow3
  267.             m_Browser.OnNewWindowExtended(Url, Cancel, CType(Flags, NWMF), UrlContext)
  268.         End Sub
  269.     End Class
  270.     Public Class WebBrowserNewWindowExtendedEventArgs
  271.         Inherits CancelEventArgs
  272.         Private m_Url As String
  273.         Private m_UrlContext As String
  274.         Private m_Flags As NWMF
  275.         Public ReadOnly Property Url() As String
  276.             Get
  277.                 Return m_Url
  278.             End Get
  279.         End Property
  280.         Public ReadOnly Property UrlContext() As String
  281.             Get
  282.                 Return m_UrlContext
  283.             End Get
  284.         End Property
  285.         Public ReadOnly Property Flags() As NWMF
  286.             Get
  287.                 Return m_Flags
  288.             End Get
  289.         End Property
  290.         Public Sub New(ByVal url As String, ByVal urlcontext As String, ByVal flags As NWMF)
  291.             m_Url = url
  292.             m_UrlContext = urlcontext
  293.             m_Flags = flags
  294.         End Sub
  295.  
  296.     End Class
  297.     Public Class WebBrowserNavigatingExtendedEventArgs
  298.         Inherits CancelEventArgs
  299.         Private m_Url As String
  300.         Private m_Frame As String
  301.         Private m_Postdata() As Byte
  302.         Private m_Headers As String
  303.         Public ReadOnly Property Url() As String
  304.             Get
  305.                 Return m_Url
  306.             End Get
  307.         End Property
  308.         Public ReadOnly Property Frame() As String
  309.             Get
  310.                 Return m_Frame
  311.             End Get
  312.         End Property
  313.         Public ReadOnly Property Headers() As String
  314.             Get
  315.                 Return m_Headers
  316.             End Get
  317.         End Property
  318.         Public ReadOnly Property Postdata() As String
  319.             Get
  320.                 Return PostdataToString(m_Postdata)
  321.             End Get
  322.         End Property
  323.         Public ReadOnly Property PostdataByte() As Byte()
  324.             Get
  325.                 Return m_Postdata
  326.             End Get
  327.         End Property
  328.         Public Sub New(ByVal url As String, ByVal frame As String, ByVal postdata As Byte(), ByVal headers As String)
  329.             m_Url = url
  330.             m_Frame = frame
  331.             m_Postdata = postdata
  332.             m_Headers = headers
  333.         End Sub
  334.         Private Function PostdataToString(ByVal p() As Byte) As String
  335.             Dim tabpd() As Byte, bstop As Boolean = False, stmp As String = "", i As Integer = 0
  336.             tabpd = p
  337.             If tabpd Is Nothing OrElse tabpd.Length = 0 Then
  338.                 Return ""
  339.             Else
  340.                 For i = 0 To tabpd.Length - 1
  341.                     stmp += ChrW(tabpd(i))
  342.                 Next
  343.                 stmp = Replace(stmp, ChrW(13), "")
  344.                 stmp = Replace(stmp, ChrW(10), "")
  345.                 stmp = Replace(stmp, ChrW(0), "")
  346.             End If
  347.             If stmp = Nothing Then
  348.                 Return ""
  349.             Else
  350.                 Return stmp
  351.             End If
  352.         End Function
  353.  
  354.     End Class
  355. #End Region
  356.     <ComImport(), Guid("64AB4BB7-111E-11D1-8F79-00C04FC2FBE1")> _
  357.     Public Class ShellUIHelper
  358.     End Class
  359. End Class

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi clarkkent » T.Sáu 28/08/2009 1:25 pm

kế thừa thôi :D
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

thuongquoc
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Ba 11/08/2009 4:00 pm
Đến từ: Lai Vung - Đồng Tháp
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi thuongquoc » CN 30/08/2009 9:33 pm

clarkkent đã viết:kế thừa thôi :D

:)uh. Nhưng đơn giản hóa nhiều vấn đề phức tập đấy chứ như sự kiện "NewWindow","Navigating", menu ngữ cảnh...
PS: trình duyệt mẫu của clarkent còn thiếu một số tính năng như duyệt theo tab, thêm - quản lý trang yêu thích...chẳng hạn. Thêm lib Elphic Speech Tool của Quốc không?:d
--q

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi clarkkent » CN 30/08/2009 11:41 pm

lib nào? post lên đi :D
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

thuongquoc
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Ba 11/08/2009 4:00 pm
Đến từ: Lai Vung - Đồng Tháp
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi thuongquoc » T.Hai 31/08/2009 11:43 am

clarkkent đã viết:lib nào? post lên đi :D

Lib Quốc tích hợp trong sản phẩm "Elphic Language Tool", có tên là "Elphic Speech Tool" đó. Quốc không post lên vì nó còn nhiều thiếu sót quá:( Đợi khi rảnh mới chính thức phát triển rồi mới công bố được:)

Hình đại diện của người dùng
forte
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 92
Ngày tham gia: T.Năm 21/01/2010 8:56 am
Đến từ: Việt Nam
Has thanked: 4 time
Been thanked: 3 time
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi forte » T.Năm 21/01/2010 9:03 am

Mời mọi người xem qua bài viết này :
http://tinsoftware.com/forum/showthread ... 29#pid3129
Đó là web browser do em viết, hỗ trợ tab, pop-up blocker, favorites,... bảo mật tốt, dùng webbrowser control

Download: http://files.myopera.com/forte2610/file ... r_0.34.zip

botay2010
Bài viết: 2
Ngày tham gia: T.Sáu 29/01/2010 4:16 pm

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi botay2010 » T.Sáu 29/01/2010 4:33 pm

em hỏi tí. trong web browser của thằng visual.
Nếu em muốn thay đổi thông số khác với thằng IE thì phải là thế nào?

Hình đại diện của người dùng
forte
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 92
Ngày tham gia: T.Năm 21/01/2010 8:56 am
Đến từ: Việt Nam
Has thanked: 4 time
Been thanked: 3 time
Liên hệ:

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi forte » T.Ba 02/02/2010 10:21 am

Ý anh muốn nói thay đổi thông số là sao ạ?
Nếu ý anh là không dùng webbrowser control thì có thể dùng Gecko của Firefox

botay2010
Bài viết: 2
Ngày tham gia: T.Sáu 29/01/2010 4:16 pm

Re: [VB.NET]Spider Web - Mã nguồn 1 Web Browse

Gửi bàigửi bởi botay2010 » T.Ba 02/02/2010 5:53 pm

Mình muốn là thay đổi các thông tin như :
Browser name: Microsoft Internet Explorer
Browser version: 4
systemLanguage : en-us

user-agent : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
của thằng trình duyệt mới tạo trong visual đó.


Quay về “[.NET] Mã nguồn chương trình tiện ích”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách