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:
Kommen wir nun zu den Ereignissen (eigene Klasse):
Jetzt kommen wir zu einem anderen Teil, nämlich der allgemeinen Logik:
Fast geschafft - fehlt nur noch die letzte Klasse: Proxy.
Das wars - aufgerufen wird dies mit Logik.StartUp().
Viel Spaß.
# LaPi
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
- Imports System.Text.RegularExpressions
- Imports System.Net
- Public Class Google
- Public Sub Google()
- 'Kann man leer lassen
- End Sub
- Public Function Execute(ByVal cmd As String) As String()
- Return Execute(cmd, 1)
- End Function
- Public Function Execute(ByVal cmd As String, ByVal pages As Integer()) As String()
- Dim results As New List(Of String)
- For Each page As Integer In pages
- results.AddRange(Execute(cmd, page))
- Next
- Return results.ToArray()
- End Function
- Public Function Execute(ByVal cmd As String, ByVal page As Integer) As String()
- Ereignisse.Log(String.Format("Durchsuche Google für ""{0}"" auf der Seite {1}", cmd, page), True)
- Dim resultPages As New List(Of String)()
- Dim uri As String = String.Format("http://google.de/search?q={0}&num=100&start={1}", cmd, (page - 1) * 100)
- Dim client As New WebClient()
- Dim content As String = client.DownloadString(uri)
- Dim pattern As String = "<a href=""([^""]+)"" class=l"
- Dim matches As MatchCollection = Regex.Matches(content, pattern)
- For Each match As Match In matches
- resultPages.Add(match.Groups(1).Value)
- Next
- Ereignisse.Log(String.Format("{0} Seiten für ""{0}"" gefunden", resultPages.Count, cmd), True)
- Return resultPages.ToArray()
- End Function
- End Class
Kommen wir nun zu den Ereignissen (eigene Klasse):
VB.NET-Quellcode
- Imports System.Reflection
- Public Class Ereignisse
- Public Shared Sub Log(ByVal text As String)
- Log(text, False)
- End Sub
- Public Shared Sub Log(ByVal text As String, ByVal debug As Boolean)
- Dim stackTrace As New StackTrace()
- Dim callingMethod As String = stackTrace.GetFrame(1).GetMethod().Name
- Dim calledMethod As String = MethodBase.GetCurrentMethod().Name
- Console.ForegroundColor = ConsoleColor.Red
- Console.Write("[" + TimeOfDay + "] ")
- Console.ForegroundColor = ConsoleColor.Green
- Console.WriteLine(If(debug, """{0}"" -> ""{1}"": {2}", "{2}"), callingMethod, calledMethod, text)
- End Sub
- End Class
Jetzt kommen wir zu einem anderen Teil, nämlich der allgemeinen Logik:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Text
- Imports System.Collections.Generic
- Public Class Logik
- Public Shared Sub StartUp()
- Ereignisse.Log("Suchwort (z.B. Proxylisten):")
- Dim q As String = Console.ReadLine()
- lbl_pages:
- Ereignisse.Log("Seiten (Seiten zum Suchen/Filtern, muss größer als 0 sein!):")
- Dim pages As Integer = 0
- If Integer.TryParse(Console.ReadLine(), pages) = False OrElse pages <= 0 Then
- Ereignisse.Log("Falsche Eingabe benutzt!")
- GoTo lbl_pages
- End If
- Ereignisse.Log("Schreibe die Proxies in ""proxies.txt""")
- Ereignisse.Log("Drücke Enter zum Starten" & vbLf & vbLf)
- Console.ReadLine()
- For i As Integer = 1 To pages
- Dim links As String() = New Google().Execute(q, i)
- For j As Integer = 0 To links.Length - 1
- File.AppendAllLines("proxies.txt", Proxy.GetProxies(New Uri(links(j))))
- Next
- Next
- Console.ReadLine()
- End Sub
- End Class
Fast geschafft - fehlt nur noch die letzte Klasse: Proxy.
VB.NET-Quellcode
- Imports System.Net
- Imports System.Text.RegularExpressions
- Public Class Proxy
- Public Shared Function GetProxies(ByVal uri As Uri) As String()
- Ereignisse.Log(String.Format("Suche Proxies von ""{0}""", uri.Host), True)
- Dim content As String = ""
- Try
- content = New WebClient().DownloadString(uri)
- Catch
- Ereignisse.Log("Suche fehlgeschlagen!")
- Return New String() {}
- End Try
- Return GetProxies(New WebClient().DownloadString(uri))
- End Function
- Public Shared Function GetProxies(ByVal content As String) As String()
- 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+)"
- Dim matches As MatchCollection = Regex.Matches(content, pattern)
- Dim proxies As String() = New String(matches.Count - 1) {}
- For i As Integer = 0 To matches.Count - 1
- proxies(i) = matches(i).Value
- Next
- Ereignisse.Log(String.Format("Gefundene Proxies: {0}", proxies.Length), True)
- Return proxies
- End Function
- End Class
Das wars - aufgerufen wird dies mit Logik.StartUp().
Viel Spaß.
# LaPi