Request Funktion für Socks

  • VB.NET
  • .NET (FX) 4.5–4.8

    Request Funktion für Socks

    Hallo.

    Und zwar würde ich gerne einen Socks 5 Proxy so nutzen können, wie diese Funktion hier:

    VB.NET-Quellcode

    1. Private Shared Function Req(Site As String, Optional Met As String = "GET", Optional P As String = "") As String
    2. Dim R As HttpWebRequest = CType(HttpWebRequest.Create(Site), HttpWebRequest)
    3. With R
    4. .Proxy = Nothing
    5. .Method = Met
    6. .CookieContainer = Containa
    7. .AllowAutoRedirect = True
    8. .UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36"
    9. .ContentType = "application/x-www-form-urlencoded"
    10. .Timeout = 20000
    11. End With
    12. If Met = "POST" AndAlso P.Length > 4 Then
    13. R.ContentLength = P.Length
    14. Using Wr As New StreamWriter(R.GetRequestStream(), System.Text.Encoding.Default)
    15. Wr.Write(P)
    16. End Using
    17. End If
    18. Using Re As New StreamReader(R.GetResponse.GetResponseStream())
    19. Return Re.ReadToEnd
    20. End Using
    21. End Function


    Hat jemand Tipps, wie man das am schönsten umsetzen kann?

    Hab bis jetzt Folgendes:


    VB.NET-Quellcode

    1. #Region "SocksStuff"
    2. Class SocketHelper
    3. Public Shared Function Connect(T As Integer) As Socket
    4. Return New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) With {.SendTimeout = T}
    5. End Function
    6. Public Shared Function GetResponse(ByVal client As Socket) As String
    7. Dim num As Integer = 0
    8. Dim buffer As Byte() = New Byte(1 - 1) {}
    9. Dim str As String = String.Empty
    10. Do
    11. num = client.Receive(buffer)
    12. str = (str & Encoding.UTF8.GetString(buffer))
    13. Loop While (num > 0)
    14. Return str
    15. End Function
    16. End Class
    17. #Region "Socks5Proxy"
    18. Private cll As Socket
    19. Private Property Client As Socket
    20. Get
    21. Return cll
    22. End Get
    23. Set(value As Socket)
    24. If value.Equals(cll) Then Exit Property
    25. cll = value
    26. End Set
    27. End Property
    28. Private networkk As NetworkStream
    29. Private Property connection As NetworkStream
    30. Get
    31. Return networkk
    32. End Get
    33. Set(value As NetworkStream)
    34. If value.Equals(networkk) Then Exit Property
    35. networkk = value
    36. End Set
    37. End Property
    38. Public Function Connect(Host As String, Po As String) As Integer
    39. Try
    40. Me.Client = SocketHelper.Connect(8000)
    41. Me.Client.Connect(Host, Po)
    42. Me.connection = New NetworkStream(Me.Client)
    43. Dim writer As New BinaryWriter(Me.connection)
    44. writer.Write(CByte(5))
    45. writer.Write(CByte(1))
    46. writer.Write(CByte(0))
    47. Dim buffer As Byte() = New Byte(2 - 1) {}
    48. Me.Client.Receive(buffer)
    49. If ((buffer(0) = 5) AndAlso (buffer(1) = 0)) Then
    50. writer.Write(CByte(5))
    51. writer.Write(CByte(1))
    52. writer.Write(CByte(0))
    53. writer.Write(CByte(3))
    54. Dim bytes As Byte() = Encoding.ASCII.GetBytes(Host)
    55. writer.Write(CByte(bytes.Length))
    56. writer.Write(bytes, 0, bytes.Length)
    57. writer.Write(CByte(0))
    58. writer.Write(CByte(80))
    59. Me.connection.Read(buffer, 0, 2)
    60. Return buffer(1)
    61. End If
    62. Catch exception1 As Exception
    63. Return -1
    64. End Try
    65. Return -1
    66. End Function
    67. Public Function GetResponse(ByVal encoding As Encoding) As String
    68. Return New StreamReader(Me.connection, encoding).ReadToEnd.Substring(8)
    69. End Function
    70. Public Sub SendByteArray(ByVal data As Byte())
    71. Me.connection.Write(data, 0, data.Length)
    72. End Sub
    73. Public Sub SendString(ByVal str As String)
    74. Dim bytes As Byte() = Encoding.UTF8.GetBytes(str)
    75. Me.SendByteArray(bytes)
    76. End Sub
    77. #End Region
    78. #Region "General"
    79. Private Function Connect(host As String) As Socket
    80. Dim socket As Socket = SocketHelper.Connect(8000)
    81. socket.Connect(host, 80)
    82. Return socket
    83. End Function
    84. #End Region
    85. #End Region