Ich habe einige "korporative" Systeme, die ich bei der Arbeit verwenden muss. Einige von ihnen sind schrecklich, mit Bildern, Pop-ups und so weiter.
Ich habe darüber nachgedacht, einige Dinge mit Curl oder ähnlichem zu automatisieren. Ich brauche Login, klicke auf Hyperlinks, setze ein paar Daten und sie machen einen Beitrag.
Ist es möglich, Locken zu verwenden? Oder werde ich besser etwas wie Selen verwenden?
wget
undcurl
kann die Netscape-Cookie-Datei verwenden. Wenn Ihr Browser auch eine solche Datei verwendet, reicht dies möglicherweise aus, um sie nur dem Downloader anzugeben. Also, welche Art von Browser verwenden Sie?Antworten:
Ja, mit Curl ist das völlig möglich. Am wichtigsten wird es sein, Cookies zwischen der Verwendung von curl mit zu speichern und neu zu laden
--cookie-jar
. Sie können bei Bedarf auch Formulardaten bereitstellen. Normalerweise verwende ich ein Firefox-Add-On namens Live HTTP-Header, um zu erfassen, was passiert, wenn ich auf einer Website navigiere. Es werden alle Überschriften, aber auch alle Formularbeiträge aufgezeichnet, was sehr hilfreich ist, wenn Sie herausfinden möchten, was mit Locken zu tun ist. Ich habe Bash-Skripte geschrieben, die verschiedene Curl-Aufrufe automatisieren und Pipes und temporäre Dateien (mit freundlicher Genehmigung vonmktemp
) verwenden, um eine begrenzte Verarbeitung auf der Webseite durchzuführen. Wenn ich jedoch viel Webseitenverarbeitung ausführen muss, wechsle ich normalerweise mit LibWWW zu Perl.quelle
Verwenden Sie für einfache Fälle des Herunterladens des Inhalts einer Seite curl oder wget . Beide sind Befehlszeilentools, die zum Herunterladen von Dateien über HTTP entwickelt wurden und über viele Optionen verfügen. In Ihrem Fall müssen Sie wahrscheinlich dafür sorgen, dass diese Tools eher wie ein Browser aussehen. lutzkys antwort und penguin359s antwort erwähnen einige curl- und wget-optionen, die in dieser hinsicht nützlich sind.
Manchmal, wenn Sie sich anmelden müssen , ist es viel einfacher, sich zuerst manuell in einem Webbrowser anzumelden und dann die Cookies des Webbrowsers zu exportieren (Erweiterungen wie allcookies oder Cookies für Firefox exportieren können helfen).
Wenn Sie benötigen den Inhalt zu analysieren einiger Seiten oder Post Formen , können Sie schickere Werkzeuge als curl und wget benötigen. Einige gute Tools sind Perl mit
LWP
(libwww) undHTML::TreeBuilder
(HTML-Tree) oder Python mit Standardbibliotheken (insbesonderehttplib
undhtmllib
).Für komplexere Interaktionen mit einer Website ist die Referenz Perls WWW :: Mechanize . Diese Perl-Bibliothek definiert übergeordnete Funktionen für die Interaktion mit einer Website wie ein Webbrowser, einschließlich POST, Formularen, Cookies, aber nicht Javascript. Wenn Perl nicht Ihr Ding ist, enthält diese Bibliothek Imitationen mit ähnlichen Funktionen in anderen Sprachen, wie z. B. Python mechanize und Ruby Mechanize .
Wenn Sie schließlich Javascript benötigen , besteht der übliche Ansatz darin, einen Webbrowser zu verwenden, der von einem Browser-Automatisierungsframework gesteuert wird. Selen und Watir sind populäre Wahlen; Siehe auch Gibt es neben SeleniumRC noch andere gute Tools, mit denen Webseiten mit Inhalten abgerufen werden können, die mit JavaScript erstellt wurden?
quelle
Mein Favorit ist
wget
, also gebe ich ein Beispiel dafür. Sie möchten Ihre Browsersitzung so genau wie möglich replizieren. Verwenden Sie dazu die entsprechenden Befehlszeilenargumente. Welche erforderlich sind, hängt davon ab, wie gründlich die Website Ihren Browser überprüft.--referer
(sic) ist normalerweise ausreichend, aber Sie könnten auch--user-agent
und brauchen--load-cookies
.Diese Technik ist im Grunde genommen Browser-Spoofing - Sie versuchen, sich
wget
der Site als Browser zu präsentieren. Das größte Problem, dem Sie gegenüberstehen, ist CAPTCHA, das auf der von Ihnen angegebenen Beispielsite nicht vorhanden ist. Stellen Sie außerdem sicher, dass Sie die Zeitrichtlinien der Site einhalten (in diesem Fall 45 Sekunden), da Sie sonst wahrscheinlich blockiert werden.Es ist wahrscheinlich nicht möglich, dieselbe Datei über verschiedene Sitzungen hinweg herunterzuladen - die Site gewährt einer bestimmten Sitzung Download-Berechtigungen für die jeweilige Datei.
quelle