elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ejecutar JS en Navegador desde VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar JS en Navegador desde VB.NET  (Leído 3,806 veces)
Kmiiik

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ejecutar JS en Navegador desde VB.NET
« en: 30 Julio 2019, 02:07 am »

Buenas noches. Me gustaría que me pudieran orientar con información sobre como se podría enviar JS desde un programa hecho en VB.NET (winform) al navegador (Google Chrome, firefox, o el que sea). Actualmente hago algo similar usando un control WebBrowser (GeckoFX) en mi formulario, para cargar la pagina en el control y ejecutar JS dentro, lo cual funciona todo bien.. pero me gustaría saber como se podría hacer sin depender de un control incrustado en el programa.

Lo más cercano a la pregunta que hago sería algo igual al funcionamiento en SOCKET.IO con NODEJS, donde puedo hacer que se ejecute JS en el cliente solo con enviar un comando desde el servidor. Pues algo similar quisiera saber si se puede hacer con VB.NET en un navegador, sea que pueda usar una extensión de google como intermediario para ejecutar JS o si conocen alguna manera de hacer algo similar.. gracias


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ejecutar JS en Navegador desde VB.NET
« Respuesta #1 en: 30 Julio 2019, 04:33 am »

No se mucho de VB.net pero debe de haber implementaciones de websockets en VB.net. Si quieres que VB.net corra JS en google chrome lo único que se me ocurre es que hagas un archivo .html y agregues el codigo ahí y que corras google chrome desde VB.net para abrir el archivo .html.


En línea

Kmiiik

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ejecutar JS en Navegador desde VB.NET
« Respuesta #2 en: 31 Julio 2019, 02:40 am »

He intentado mediante selenium. Pero la pagina donde lo intento hacer detecta cualquiera de esos programas, al igual que phantomJS y similares :c Lo que quiero es que pueda funcionar directamente con el navegador que se usa, no con una modificación de alguno como en el caso de selenium o similar.. no sé si sea posible, por websocket he buscado ejemplos con vb.net para conectarse a WEB, pero solo hay de ASP.. algo que no es lo que busco

EDIT

Encontré en internet información sobre WebSocket en vb.net. Puedo enviar mensajes desde el servidor VB.NET al cliente (navegador). Pero no sé bien como recibirlos..
« Última modificación: 1 Agosto 2019, 00:50 am por Kmiiik » En línea

Kmiiik

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ejecutar JS en Navegador desde VB.NET
« Respuesta #3 en: 1 Agosto 2019, 19:30 pm »

Buscando en internet sobre lo que quería hacer, pude encontrar información de websocket y vb.net para comunicarme con el navegador. Con ello pude lograr hacer una comunicación entre vb.net y el navegador mediante WebSocket. Desde mi servidor vb.net puedo enviar mensajes al cliente en el navegador y recibirlos perfectamente, pero no sé como recibir el mensaje que me envía el cliente. Estuve buscando sobre eso, y encontré un pregunta similar en stackoverflow, y el que hizo la pregunta pudo solucionar su problema (comentó la solución) pero no entiendo bien como implementar su código.. Alguien podría ayudarme?


SERVER VB.NET
Código
  1. Imports System.Net.Sockets
  2. Imports System.Threading
  3. Imports System.Net
  4.  
  5. Public Class Form1
  6.    Dim serverTcp As TcpListener
  7.    Dim serverThread As Thread
  8.    Dim host_ As String = ""
  9.    Dim curSocket As Socket
  10.    Sub Main()
  11.        '' Start server
  12.        serverThread = New Thread(AddressOf serverProc)
  13.        serverThread.Start()
  14.    End Sub
  15.  
  16.    Private Sub serverProc()
  17.        Try
  18.            '' Listen to port 5665
  19.            serverTcp = New TcpListener(System.Net.IPAddress.Parse(host_), 5665)
  20.            serverTcp.Start()
  21.  
  22.            Console.WriteLine("Listen to port 5665 ...")
  23.  
  24.            '' Accept any connection
  25.            While (True)
  26.                curSocket = serverTcp.AcceptSocket()
  27.                Dim thread As New Thread(AddressOf clientProc)
  28.                thread.Start(curSocket)
  29.            End While
  30.        Catch ex As Exception
  31.  
  32.        End Try
  33.  
  34.    End Sub
  35.  
  36.    Private Sub clientProc(ByVal sck As Socket)
  37.        Try
  38.            Dim netStream As New NetworkStream(sck)
  39.            Dim netReader As New IO.StreamReader(netStream)
  40.            Dim netWriter As New IO.StreamWriter(netStream)
  41.  
  42.            Dim key As String = ""
  43.  
  44.            Console.WriteLine("Accept new connection ...")
  45.  
  46.            '' Reading handshake message
  47.            While (True)
  48.                Dim line As String = netReader.ReadLine()
  49.                If line.Length = 0 Then
  50.                    Exit While
  51.                End If
  52.  
  53.                If (line.StartsWith("Sec-WebSocket-Key: ")) Then
  54.                    key = line.Split(":")(1).Trim()
  55.                End If
  56.  
  57.                Console.WriteLine("Data: " & line)
  58.  
  59.            End While
  60.  
  61.            '' Calculate accept-key
  62.            key += "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
  63.            key = getSHA1Hash(key)
  64.  
  65.            '' Response handshake message
  66.            Dim response As String
  67.            response = "HTTP/1.1 101 Switching Protocols" & vbCrLf
  68.            response &= "Upgrade: websocket" & vbCrLf
  69.            response &= "Connection: Upgrade" & vbCrLf
  70.            response &= "Sec-WebSocket-Accept: " & key & vbCrLf & vbCrLf
  71.            netWriter.Write(response)
  72.            netWriter.Flush()
  73.  
  74.            '' Sending message
  75.            SendMessage(sck, "SEND.. VB.NET")
  76.        Catch ex As Exception
  77.  
  78.        End Try
  79.  
  80.    End Sub
  81.    Sub Msg(t As String)
  82.        Console.WriteLine(t)
  83.    End Sub
  84.    Function getSHA1Hash(ByVal strToHash As String) As String
  85.        Dim sha1Obj As New System.Security.Cryptography.SHA1CryptoServiceProvider
  86.        Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
  87.        Dim result As String
  88.  
  89.        bytesToHash = sha1Obj.ComputeHash(bytesToHash)
  90.        result = Convert.ToBase64String(bytesToHash)
  91.  
  92.        Return result
  93.    End Function
  94.  
  95.    Sub SendMessage(sck As Socket, message As String)
  96.        Dim rawData = System.Text.Encoding.UTF8.GetBytes(message)
  97.  
  98.        Dim frameCount = 0
  99.        Dim frame(10) As Byte
  100.  
  101.        frame(0) = CByte(129)
  102.  
  103.        If rawData.Length <= 125 Then
  104.            frame(1) = CByte(rawData.Length)
  105.            frameCount = 2
  106.        ElseIf rawData.Length >= 126 AndAlso rawData.Length <= 65535 Then
  107.            frame(1) = CByte(126)
  108.            Dim len = CByte(rawData.Length)
  109.            frame(2) = CByte(((len >> 8) & CByte(255)))
  110.            frame(3) = CByte((len & CByte(255)))
  111.            frameCount = 4
  112.        Else
  113.            frame(1) = CByte(127)
  114.            Dim len = CByte(rawData.Length)
  115.            frame(2) = CByte(((len >> 56) & CByte(255)))
  116.            frame(3) = CByte(((len >> 48) & CByte(255)))
  117.            frame(4) = CByte(((len >> 40) & CByte(255)))
  118.            frame(5) = CByte(((len >> 32) & CByte(255)))
  119.            frame(6) = CByte(((len >> 24) & CByte(255)))
  120.            frame(7) = CByte(((len >> 16) & CByte(255)))
  121.            frame(8) = CByte(((len >> 8) & CByte(255)))
  122.            frame(9) = CByte((len & CByte(255)))
  123.            frameCount = 10
  124.        End If
  125.  
  126.        Dim bLength = frameCount + rawData.Length
  127.        Console.WriteLine(frameCount)
  128.        Console.WriteLine(rawData.Length)
  129.        Dim reply(bLength + 1) As Byte
  130.  
  131.        Dim bLim = 0
  132.        For i = 0 To frameCount - 1
  133.            Console.WriteLine(bLim)
  134.            reply(bLim) = frame(i)
  135.            bLim += 1
  136.        Next
  137.  
  138.        For i = 0 To rawData.Length - 1
  139.            Console.WriteLine(bLim)
  140.            reply(bLim) = rawData(i)
  141.            bLim += 1
  142.        Next
  143.  
  144.        sck.Send(reply)
  145.    End Sub
  146.  
  147.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  148.        host_ = Dns.GetHostEntry(Dns.GetHostName()).AddressList _
  149.    .Where(Function(a As IPAddress) Not a.IsIPv6LinkLocal AndAlso Not a.IsIPv6Multicast AndAlso Not a.IsIPv6SiteLocal) _
  150.    .Last() _
  151.    .ToString()
  152.    End Sub
  153.  
  154.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  155.        Main()
  156.    End Sub
  157.  
  158.    Private Sub btnEnviarMensaje_Click(sender As Object, e As EventArgs) Handles btnEnviarMensaje.Click
  159.        SendMessage(curSocket, txtMensaje.Text)
  160.    End Sub
  161.  
  162. End Class


Client
Código
  1. function connect(host) {
  2.  var ws = new WebSocket(host);
  3.  ws.onopen = function () {
  4.    console('connected');
  5.    //ws.send("test");
  6.  };
  7.  
  8.  ws.onmessage = function (evt) {  
  9.    console('reveived data:'+evt.data);
  10.  };
  11.  
  12.  ws.onclose = function () {
  13.    console('socket closed');
  14.  };



Respuesta para leer mensajes del cliente en el servidor (es lo que no entiendo)
https://stackoverflow.com/questions/24721957/websocket-server-client-server-frame-mask


Gracias de antemano
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines