Proxy Suche

    • VB.NET

    Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

      Proxy Suche

      Hi!

      Nach langer Inaktivität bin ich wieder da.

      Ich habe einen Code für euch, wo ihr nach Proxies "googlen" könnt - aber dafür braucht ihr .NET Framework 4.0 (File.AppendAllLines).

      Das Programm ist in mehreren Klassen unterteilt, von mir übersetzt worden mit ein paar Änderungen (Code in C# von Nico [KoRn]) und ist eine Konsolenanwendung.

      Google Klasse:

      VB.NET-Quellcode

      1. Imports System.Text.RegularExpressions
      2. Imports System.Net
      3. Public Class Google
      4. Public Sub Google()
      5. 'Kann man leer lassen
      6. End Sub
      7. Public Function Execute(ByVal cmd As String) As String()
      8. Return Execute(cmd, 1)
      9. End Function
      10. Public Function Execute(ByVal cmd As String, ByVal pages As Integer()) As String()
      11. Dim results As New List(Of String)
      12. For Each page As Integer In pages
      13. results.AddRange(Execute(cmd, page))
      14. Next
      15. Return results.ToArray()
      16. End Function
      17. Public Function Execute(ByVal cmd As String, ByVal page As Integer) As String()
      18. Ereignisse.Log(String.Format("Durchsuche Google für ""{0}"" auf der Seite {1}", cmd, page), True)
      19. Dim resultPages As New List(Of String)()
      20. Dim uri As String = String.Format("http://google.de/search?q={0}&num=100&start={1}", cmd, (page - 1) * 100)
      21. Dim client As New WebClient()
      22. Dim content As String = client.DownloadString(uri)
      23. Dim pattern As String = "<a href=""([^""]+)"" class=l"
      24. Dim matches As MatchCollection = Regex.Matches(content, pattern)
      25. For Each match As Match In matches
      26. resultPages.Add(match.Groups(1).Value)
      27. Next
      28. Ereignisse.Log(String.Format("{0} Seiten für ""{0}"" gefunden", resultPages.Count, cmd), True)
      29. Return resultPages.ToArray()
      30. End Function
      31. End Class


      Kommen wir nun zu den Ereignissen (eigene Klasse):

      VB.NET-Quellcode

      1. Imports System.Reflection
      2. Public Class Ereignisse
      3. Public Shared Sub Log(ByVal text As String)
      4. Log(text, False)
      5. End Sub
      6. Public Shared Sub Log(ByVal text As String, ByVal debug As Boolean)
      7. Dim stackTrace As New StackTrace()
      8. Dim callingMethod As String = stackTrace.GetFrame(1).GetMethod().Name
      9. Dim calledMethod As String = MethodBase.GetCurrentMethod().Name
      10. Console.ForegroundColor = ConsoleColor.Red
      11. Console.Write("[" + TimeOfDay + "] ")
      12. Console.ForegroundColor = ConsoleColor.Green
      13. Console.WriteLine(If(debug, """{0}"" -> ""{1}"": {2}", "{2}"), callingMethod, calledMethod, text)
      14. End Sub
      15. End Class


      Jetzt kommen wir zu einem anderen Teil, nämlich der allgemeinen Logik:

      VB.NET-Quellcode

      1. Imports System.IO
      2. Imports System.Text
      3. Imports System.Collections.Generic
      4. Public Class Logik
      5. Public Shared Sub StartUp()
      6. Ereignisse.Log("Suchwort (z.B. Proxylisten):")
      7. Dim q As String = Console.ReadLine()
      8. lbl_pages:
      9. Ereignisse.Log("Seiten (Seiten zum Suchen/Filtern, muss größer als 0 sein!):")
      10. Dim pages As Integer = 0
      11. If Integer.TryParse(Console.ReadLine(), pages) = False OrElse pages <= 0 Then
      12. Ereignisse.Log("Falsche Eingabe benutzt!")
      13. GoTo lbl_pages
      14. End If
      15. Ereignisse.Log("Schreibe die Proxies in ""proxies.txt""")
      16. Ereignisse.Log("Drücke Enter zum Starten" & vbLf & vbLf)
      17. Console.ReadLine()
      18. For i As Integer = 1 To pages
      19. Dim links As String() = New Google().Execute(q, i)
      20. For j As Integer = 0 To links.Length - 1
      21. File.AppendAllLines("proxies.txt", Proxy.GetProxies(New Uri(links(j))))
      22. Next
      23. Next
      24. Console.ReadLine()
      25. End Sub
      26. End Class


      Fast geschafft - fehlt nur noch die letzte Klasse: Proxy.

      VB.NET-Quellcode

      1. Imports System.Net
      2. Imports System.Text.RegularExpressions
      3. Public Class Proxy
      4. Public Shared Function GetProxies(ByVal uri As Uri) As String()
      5. Ereignisse.Log(String.Format("Suche Proxies von ""{0}""", uri.Host), True)
      6. Dim content As String = ""
      7. Try
      8. content = New WebClient().DownloadString(uri)
      9. Catch
      10. Ereignisse.Log("Suche fehlgeschlagen!")
      11. Return New String() {}
      12. End Try
      13. Return GetProxies(New WebClient().DownloadString(uri))
      14. End Function
      15. Public Shared Function GetProxies(ByVal content As String) As String()
      16. Dim pattern As String = "(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]):(\d+)"
      17. Dim matches As MatchCollection = Regex.Matches(content, pattern)
      18. Dim proxies As String() = New String(matches.Count - 1) {}
      19. For i As Integer = 0 To matches.Count - 1
      20. proxies(i) = matches(i).Value
      21. Next
      22. Ereignisse.Log(String.Format("Gefundene Proxies: {0}", proxies.Length), True)
      23. Return proxies
      24. End Function
      25. End Class


      Das wars - aufgerufen wird dies mit Logik.StartUp().

      Viel Spaß.

      # LaPi
      AppendAllLines klingt nach Append für eine Datei für mehrere Linien. Komm schon, für sowas braucht man kein .Net 4. Sowas bastelt man sich schnell selber.
      Was ich auch nicht verstehe, warum hast du eine leere Prozedur ?
      Ich finde es gut , dass du mit RegEx arbeitest und ich habe das ganze auch schon abgespeichert für den Fall, dass man das gebrauchen kann.