Webrequest über Socks 5 Proxy

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Kevin Hombre.

    Webrequest über Socks 5 Proxy

    Hallo,

    ich würde gerne einen Webrequest über Socks 5 hinbekommen.

    Die Socks 5 Klasse sieht bei mir momentan so aus:

    VB.NET-Quellcode

    1. Public Class Socks5Proxy
    2. Public Sub New(EnHost As String, EnPort As Integer, EnTargetHost As String)
    3. ESocksHost = EnHost
    4. ESocksPort = EnPort
    5. ESocksTargetHost = EnTargetHost
    6. End Sub
    7. Private ESocksHost As String
    8. Private ESocksPort As Integer
    9. Private ESocksTargetHost As String
    10. Private EClient As Socket
    11. Private EConnection As NetworkStream
    12. Private ETimeout As Integer = 10000
    13. Public ReadOnly Property GetESocksHost() As String
    14. Get
    15. Return ESocksHost
    16. End Get
    17. End Property
    18. Public ReadOnly Property GetESocksPort() As Integer
    19. Get
    20. Return ESocksPort
    21. End Get
    22. End Property
    23. Public ReadOnly Property GetESocksClient() As Socket
    24. Get
    25. Return EClient
    26. End Get
    27. End Property
    28. Public ReadOnly Property GetEClientConnected() As Boolean
    29. Get
    30. Return EClient.Connected
    31. End Get
    32. End Property
    33. Public Property GetETimeout() As Integer
    34. Get
    35. Return ETimeout
    36. End Get
    37. Set(value As Integer)
    38. ETimeout = value
    39. End Set
    40. End Property
    41. Public Function Connect() As Integer
    42. 'Try
    43. Dim result As Integer
    44. EClient = SocketHelper.CreateSock(ETimeout)
    45. EClient.Connect(ESocksHost, ESocksPort)
    46. EConnection = New NetworkStream(EClient)
    47. Dim Wr As BinaryWriter = New BinaryWriter(EConnection)
    48. Wr.Write(5)
    49. Wr.Write(1)
    50. Wr.Write(0)
    51. Dim array As Byte() = {}
    52. EClient.Receive(array)
    53. If array(0) = 5 AndAlso array(1) = 0 Then
    54. Wr.Write(5)
    55. Wr.Write(1)
    56. Wr.Write(0)
    57. Wr.Write(3)
    58. Dim bytes As Byte() = Encoding.ASCII.GetBytes(ESocksTargetHost)
    59. Wr.Write(CByte(bytes.Length))
    60. Wr.Write(bytes, 0, bytes.Length)
    61. Wr.Write(0)
    62. Wr.Write(80)
    63. EConnection.Read(array, 0, 2)
    64. result = CInt(array(1))
    65. Return result
    66. End If
    67. 'Catch ex_FE As Exception
    68. ' result = -1
    69. ' Return result
    70. 'End Try
    71. result = -1
    72. Return result
    73. End Function
    74. Public Function GetResponse(encoding As Encoding) As String
    75. Return New StreamReader(EConnection, encoding).ReadToEnd().Substring(8)
    76. End Function
    77. Public Sub SendString(str As String)
    78. SendByteArray(Encoding.UTF8.GetBytes(str))
    79. End Sub
    80. Public Sub SendByteArray(data As Byte())
    81. EConnection.Write(data, 0, data.Length)
    82. End Sub
    83. End Class



    Aufruf:

    VB.NET-Quellcode

    1. Private Function CheckSocksProxy() As Integer
    2. Dim Prox As New Socks5Proxy("221.232.147.99", 1080, "www.google.com")
    3. Return Prox.Connect
    4. End Function



    Leider bekomme ich da schon eine Fehlermeldung:

    Additional information: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

    Zeile:

    VB.NET-Quellcode

    1. EClient.Receive(array)
    in der Methode Connect()


    Kann mir jemand sagen was da falsch ist?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()