Ich versuche, ein Bash-Skript zu schreiben, das einen Browser öffnet, auf eine HTML-Schaltfläche auf einer Webseite klickt und den Browser schließt, nachdem ich eine Antwort erhalten habe. Ich brauche dieses Skript, um in Terminal ausführbar zu sein. Wenn kein Bash-Skript, dann vielleicht ein Python-Skript.
Formular ist:
<form method="post" action="duophones?yc=sasv1S2f8mXKITRJS1XrenZ30SA-" enctype="application/x-www-form-urlencoded">
<input name="phone" value="+15551231235" type="hidden">
<input name="action" value="dapact" type="hidden">
<input name="session" value="0" type="hidden">
<button class="c01 c01v0" name="action" type="submit" value="Activate +15551231234 over SMS (recommended)" override="true">Activate +15551231234 over SMS (recommended)</button>
</form>
Skript, das ich habe, ist:
curl -d value="Activate +15551231234 over SMS (recommended)" www.testpage.com
Jede Hilfe oder Anleitung wäre willkommen!
Sie sollten die Verwendung von Open Source Selenium in Betracht ziehen .
Mit einem Selenium-IDE- Plugin für Firefox oder Chrome können Sie Ihre Aktionen aufzeichnen (Öffnen einer Seite, Klicken auf eine Schaltfläche), diese Songs wiedergeben und umfangreiche Python- oder Ruby-Skripte generieren, die Sie anpassen und über die CLI aufrufen können.
Ein Beispielskript zum Testen der standardmäßigen Apache-Verfügbarkeit könnte wie folgt aussehen:
#!/usr/local/bin/python
DEST_URL='http://webserver.dev/'
import unittest
from selenium import webdriver
from selenium.webdriver.common.proxy import *
class WebInterfaceTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def tearDown(self):
self.driver.quit()
def test_web_interface(self):
self.driver.get(DEST_URL)
self.assertIn('Apache2 Debian Default Page: It works', self.driver.title)
if __name__ == "__main__":
unittest.main()
Verwenden Sie cURL ( curl
). Es ist ein Befehlszeilentool, das Daten mit verschiedenen Protokollen einschließlich HTTP überträgt. Das Schöne dabei ist, dass Sie keinen GUI-Browser benötigen; alles wird auf Kommandozeilenebene abgewickelt.
Die "Schaltfläche", die Sie drücken möchten, befindet sich in einer Art Formular. Sie können die Entwicklertools in Chrome oder Firebug in Firefox verwenden, um den Code für das Formular anzuzeigen. Im Folgenden sehen Sie ein Beispielformular mit einem einzelnen Textfeld und einer Schaltfläche zum Senden:
<form action="http://foo.bar/helloworld.html" method="POST">
<input type="text" name="phone"> <br/>
<input type="submit">
</form>
Wenn Sie dieses Formular in Ihrem Webbrowser ausfüllen und auf „Senden“ klicken, senden Sie im Grunde alles, was Sie in das Textfeld eingegeben und die Anfrage an den Server gesendet haben.
Hier ist es wichtig zu beachten, dass das Formular ein Text-"Feld" namens Telefon erstellt , in dem die Daten gespeichert werden, die Sie eingeben, um gepostet zu werden. Wenn Sie in diesem Fall Ihre Telefonnummer (+12125551212) eingeben, wird dieser Wert phone zugewiesen . Wenn Sie auf die Schaltfläche Sendenphone="+12125551212
klicken, wird sie als Teil des POST gesendet.
Wenn ich also annehme, dass die Telefonnummer, die Sie als Wert für die Variable übermitteln möchten, in curl verwendet wird, würde der Code so aussehen:
curl -d "phone=+12125551212" http://foo.bar/helloworld.html
Da curl
es sich um ein Befehlszeilenprogramm handelt, können Sie es nativ in ein Bash-Skript einfügen:
#/usr/bin/bash
curl -d "phone=+12125551212" http://foo.bar/helloworld.html
exit
Eine weitere Option für robustes automatisiertes Surfen im Internet ist das WWW::Mechanize- Modul von Perl .
Um Spam an den Spamcop-Dienst zu melden , verwende ich eine Kombination aus AppleScript und Perl. AppleScript interagiert mit Mail und erhält die Spam-Inhalte, und die Perl-Seite kümmert sich um das Surfen im Internet.
Unten sehen Sie ein Beispiel, wie WWW::Mechanize
Sie ein Formular an einen Webserver senden, eine bestimmte Schaltfläche in der Antwort finden und auf die Schaltfläche klicken:
#!/usr/bin/perl
use WWW::Mechanize;
my $spamcop_url = 'http://www.spamcop.net';
my $mech = WWW::Mechanize->new();
$mech->get( $spamcop_url );
$mech->submit_form(
form_number => 1,
fields => {
username => 'ENTER YOUR SPAMCOP USER NAME HERE',
password => 'ENTER YOUR SPAMCOP PASSWORD HERE',
}
) ."\n";
my $stop = 0;
while(not $stop) {
$mech->follow_link( text => 'Report Now' ) ."\n";
my $form = $mech->form_name( 'sendreport' );
if ($form) {
print "Send Report form found: ".$mech->value('reports')."\n";
$mech->click_button( 'value' => 'Send Spam Report(s) Now' ) ."\n";
} else {
print "No report form button found.\n";
$stop = 1;
}
}
Benutzer3439894
MacMania
Allan
MacMania
Allan