Benötige dringend Hilfe. Ein Freund hat mir diese Funktion geschrieben. Haben keinen Kontakt mehr. Diese Funktion liest aus einem Textfile 1 URL pro Zeile ein und "saugt" die Proxies raus. Es benutzt dabei StringRegExp. Das funktioniert alles super bis Du auf Pages wie diese hier triffst: https://draft.blogger.com/feeds/65222318…5/posts/Default
Da bleibt es dann stehen... Entweder wegen dem Duplikate Check oder dem Filtern per Regex oder beidem. Die Funktion checkt auch auf Websites die Offline sind oder Links wo das Script schon "war" aber das funzt ja. Kann mir ein Profi die Funktion umschreiben so das auch so grosse Pages funktionieren. Mir bringt diese Funktion nicht wenn es in der Mitte stehen bleibt. NACHTRAG: NACH 2 STUNDEN WARTEN GEHT ES DANN WEITER. Ist aber viel zu langsam!
$zentral = Textfile mit der Liste von URLs
Func _leech()
$link_counter = _FileCountLines($zentral)
If (FileExists($logpath & "old_list.txt")) Then
ConsoleWrite("Datenbank wird geladen . . ." & @CRLF)
_FileReadToArray($logpath & "old_list.txt", $old_list)
_ArrayDelete($old_list, 0)
EndIf
For $zeile = 1 To $link_counter
$link = FileReadLine($zentral, $zeile)
$new = 0
If (IniRead($logpath & "dead.ini", $link, "Dead", False) == True) Then
ConsoleWrite("Link #" & $zeile & " wird übersprungen --> Dead Site!" & @CRLF)
$zeile += 1
$link = FileReadLine($zentral, $zeile)
EndIf
ConsoleWrite("Link #" & $zeile & ": " & $link & @CRLF)
If (FileExists($logpath & "bad.ini")) Then $counter = IniRead($logpath & "bad.ini", $link, "visit", 0)
If ($counter >= $max_visit) Then IniWrite($logpath & "dead.ini", $link, "Dead", True)
$file = InetRead($link, 1)
If Not @error Then
$file = BinaryToString($file)
$found = StringRegExp($file, "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?s).*?(\d{1,5})", 3)
; Original
;$found = StringRegExp($file, "[1-2]\?[0-9]\{1,3\}\.[1-2]\?[0-9]\{1,3\}\.[1-2]\?[0-9]\{1,3\}\.[1-2]\?[0-9]\{1,3\}[:\ ][1-9]\?[0-9]\{1,5\}", 3))
; http://mrhinkydink.wordpress.com/proxy-regex/
; \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b[:\ ]\d{2,5}
; by Thomas Willner
If (IsArray($found)) Then
For $u = 0 To UBound($found) - 1 Step 2
$found[$u] = $found[$u] & ":" & $found[$u + 1]
Next
For $l = UBound($found) - 1 To 0 Step -2
_ArrayDelete($found, $l)
Next
ConsoleWrite("Proxys: " & UBound($found) - 1 & @CRLF)
For $g = 0 To UBound($found) - 1
$index = _ArraySearch($old_list, $found[$g])
If ($index == -1) Then
$new += 1
FileWriteLine($output, $found[$g])
FileWriteLine($logpath & "old_list.txt", $found[$g])
EndIf
Next
If ($new == 0) Then ;Drop nothing New
$counter += 1
FileWriteLine($nothing_new, $link)
IniWrite($logpath & "bad.ini", $link, "visit", $counter)
ConsoleWrite("Link #" & $zeile & " --> Nothing New!" & @CRLF)
EndIf
ConsoleWrite("Link #" & $zeile & ": " & $new & " neue Einträge" & @CRLF)
Else
;~ Drop no Data
$counter += 1
ConsoleWrite("Link #" & $zeile & " --> No Data!" & @CRLF)
FileWriteLine($no_data, $link)
IniWrite($logpath & "bad.ini", $link, "visit", $counter)
EndIf
Else
;~ Drop offline
$counter += 1
ConsoleWrite("Link #" & $zeile & " --> Offline!" & @CRLF)
FileWriteLine($offline, $link)
IniWrite($logpath & "bad.ini", $link, "visit", $counter)
EndIf
; TRY DELAY
; Sleep(500)
Next
Return
EndFunc ;==>_leech
Alles anzeigen
Kann keiner helfen? :wacko: