Command-line browser met javascript support

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
Ik heb een Thomson ST780 modem/router van xs4all, dat het (tamelijk achterlijke) gebrek heeft niet meer in te loggen nadat de verbinding verbroken is, door een storing of zo. Dan moet je er naartoe lopen, en fysiek op 'connect' drukken. Ook echt lekker handig als je een paar dagen van huis bent.

Goed, nu had ik een klein scriptje gemaakt, dat op mijn FreeBSD server zou moeten runnen, dat in geval van een disconnect een form emuleert en een auto-submit doet. Alleen lynx kan kennelijk geen javascript ($%^&^%$), dus nou ben ik nog niks verder.

Vraag is dus: hoe krijg ik in vredesnaam een (UNIX) command-line browser zo ver dat ie een javascript submit kan uitvoeren?? Bij mijn weten kan het submitten van een form namelijk alleen met javascrippt.

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
albatross schreef op donderdag 29 januari 2009 @ 17:04:
Bij mijn weten kan [binnen een browser het automatisch] submitten van een form namelijk alleen met javascrippt.
;)

Oftewel: Een vergelijkbare http request op een alternatieve manier sturen zou het hem ook kunnen doen. :)

{signature}


Acties:
  • 0 Henk 'm!

  • teh_twisted
  • Registratie: Oktober 2005
  • Laatst online: 30-07 23:56

Tyan S7025, 1x Xeon E5520, 32GB DDR3-1333 ECC/REG, GTX275 896MB, 2x Samsung SM 2243SN, Logitech Perf MX. Laptop: MBP 10,1/6,2. Cams: Canon EOS600D+Tamron AF18-200, Sony W350. Gadgets: iPad 64GB 3G, iPhone 5 64GB, PS1-3. Auto: W211 E220CDI


Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
Voutloos schreef op donderdag 29 januari 2009 @ 17:10:
[...]
;)

Oftewel: Een vergelijkbare http request op een alternatieve manier sturen zou het hem ook kunnen doen. :)
Hoe? Wil niet dom doen, maar hoe die je een submit van een form zonder javascript?

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:06

TeeDee

CQB 241

Ik gok dat Voutloos bedoelt dat je een volledige POST request kan nabouwen met behulp van http headers.
Installeer Fiddler en bekijk de headers eens die naar het formulier verzonden worden.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
TeeDee schreef op donderdag 29 januari 2009 @ 17:42:
Ik gok dat Voutloos bedoelt dat je een volledige POST request kan nabouwen met behulp van http headers.
Installeer Fiddler en bekijk de headers eens die naar het formulier verzonden worden.
Klinkt interessant. :) Zou inderdaad wel eens kunnen werken. Ga het direct proberen.

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als het alleen maar een knop is kom je misschien zelfs wel weg met een simpele wget <form-url>. Anders even postdata opgeven middels wget --post-data '<form-data>' <form-url>

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
.oisyn schreef op donderdag 29 januari 2009 @ 18:05:
Als het alleen maar een knop is kom je misschien zelfs wel weg met een simpele wget <form-url>. Anders even postdata opgeven middels wget --post-data '<form-data>' <form-url>
Hoeft inderdaad alleen maar een button ingedrukt te worden, zeg maar:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
        <title>Untitled</title>

  <script type='text/javascript' src='/util.js'></script>

</head>

<body>

<form id="PPPConn0" name="PPPConn0" action="http://192.168.65.1/cgi/b/bb/" method="POST">
<input type='hidden' name='0' value=''>
<input type='hidden' name='1' value=''>
<input type='hidden' name='5' value="2">
<input type='button' name='12' value='Connect'>
</form>

<script type="text/javascript">
//<![CDATA[

    submitForm(document.PPPConn0,12,0,"Internet","",0,"")

//]]>
</script>

</body>
</html>

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
albatross schreef op donderdag 29 januari 2009 @ 18:11:
[...]

Hoeft inderdaad alleen maar een button ingedrukt te worden, zeg maar:
En dat is dus duidelijk een POST request. Zie .oisyn's post, 2e zin en Voutloos' post..

Je moet helemaal niet denken in browsers, javascript en knopjes; je moet gewoon rauwe data sturen met de juiste gegevens erin.

wget --post-data 'option1=A&option2=B&foo=bar' http://192.168.65.1/cgi/b/bb/


Even de javascript van de pagina ontleden (met name wat de functie submitForm() doet) of met Wireshark oid even sniffen wat er gePOST wordt et voila.

[ Voor 56% gewijzigd door RobIII op 29-01-2009 18:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • d00d
  • Registratie: September 2003
  • Laatst online: 16-09 13:23

d00d

geen matches

Kijk eens naar cURL, dat is hiervoor gemaakt.

Met Fiddler2 kun je inderdaad even kijken op de Inspectors tab in WebForms wat er precies gePOST wordt en vervolgens kun je met cURL de form posten.

Nog handiger is het om even naar de XS4ALL site te gaan en te kijken of je je contract kunt verlengen, je krijgt dan gratis de uitstekende FRITZ!Box cadeau.

42.7 percent of all statistics are made up on the spot.


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Tijd voor een firmware-update? Mijn ST780 heeft dat probleem nml niet...

日本!🎌


Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
RobIII schreef op donderdag 29 januari 2009 @ 18:17:
[...]

En dat is dus duidelijk een POST request. Zie .oisyn's post, 2e zin en Voutloos' post..

Je moet helemaal niet denken in browsers, javascript en knopjes; je moet gewoon rauwe data sturen met de juiste gegevens erin.

wget --post-data 'option1=A&option2=B&foo=bar' http://192.168.65.1/cgi/b/bb/


Even de javascript van de pagina ontleden (met name wat de functie submitForm() doet) of met Wireshark oid even sniffen wat er gePOST wordt et voila.
Dat wget idee was brilliant van jullie. :) Ik heb het uiteindelijk zo werkend gekregen:

code:
1
wget --post-data '0=12&1=Internet&5=2' 'http://192.168.65.1/cgi/b/bb/'

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
_Thanatos_ schreef op donderdag 29 januari 2009 @ 20:04:
Tijd voor een firmware-update? Mijn ST780 heeft dat probleem nml niet...
Ben ik eerlijk gezegd een beetje huiverig voor. Mijn huidige firmware, 6.2.16.3, is rete-stabiel, en ik weet dat lang niet alle firmware revisies even stabiel zijn.

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Aan je probleem te zien, is ie dus niet stabiel genoeg ;)
De momenteel laatste versie doet het bij mij in elk geval prima.

日本!🎌


Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
Die Speedtouch dingen hebben toch allemaal telnet? Via telnet kan ik mijn Speedtouch 546 in ieder geval vrij gemakkelijk resetten (system restart intypen in de telnet shell).

Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
robbert schreef op vrijdag 30 januari 2009 @ 09:44:
Die Speedtouch dingen hebben toch allemaal telnet? Via telnet kan ik mijn Speedtouch 546 in ieder geval vrij gemakkelijk resetten (system restart intypen in de telnet shell).
Het ging er mij even om dat ik de Internet verbinding kon herstellen met een scriptje (dat via cron af en toe pollt). Met dat wget commando gaat dat nu.

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
albatross schreef op vrijdag 30 januari 2009 @ 12:52:
[...]

Het ging er mij even om dat ik de Internet verbinding kon herstellen met een scriptje (dat via cron af en toe pollt). Met dat wget commando gaat dat nu.
Mijn idee was dan dat scriptje via telnet de modem te laten herstarten.

Bij nader inzien is het nog ranziger via telnet, je krijgt dan zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash

expect << EOF
set timeout 20

spawn telnet 192.168.0.253

expect "Username :"
send "my username\r"
expect "Password :"
send "my password\r"

expect "=>"
send "system reboot\r"
send "exit\r"

exit

EOF

[ Voor 31% gewijzigd door robbert op 30-01-2009 14:06 ]


Acties:
  • 0 Henk 'm!

  • albatross
  • Registratie: September 2006
  • Laatst online: 11-06 16:43
robbert schreef op vrijdag 30 januari 2009 @ 13:09:
[...]

Mijn idee was dan dat scriptje via telnet de modem te laten herstarten.

Bij nader inzien is het nog ranziger via telnet, je krijgt dan zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash

expect << EOF
set timeout 20

spawn telnet 192.168.0.253

expect "Username :"
send "my username\r"
expect "Password :"
send "my password\r"

expect "=>"
send "system reboot\r"
send "exit\r"

exit

EOF
Ja, zo zou het ook kunnen. Alleen wil ik mijn router niet per se rebooten, maar alleen weer de Internet verbinding herstellen. Als xs4all namelijk weer eens onderhoud verricht (doen ze vaak, de laatste tijd) dan, hoewel ADSL er nog steeds is, probeert de ST780 de connectie met het Internet (login bij xs4all, neem ik aan) niet meer te herstellen. Dan moet je via de web-interface de 'Connect' button weer indrukken, anders blijft de Internet connectie down. Met die geconstrueerde wget command line gaat dat dus vlekkeloos, nu. :)

i9 12900K | MSI Meg CoreLiquid S360 | ASUS ROG STRIX Z690-A GAMING WIFI D4 | G.Skill Trident Z Royal Elite 2x32GB 4266Mhz Gold | AORUS RTX 4090 MASTER | Dark Power 13 1300W | Samsung 980/860/970/990 Pro | Logitech Z-906 | Phanteks Evolv X | Dell AW3821DW


Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
Dat kan ook via telnet trouwens 8)
code:
1
pppoa ifattach intf=PPPoA_1
ipv
code:
1
system reboot
Pagina: 1