Něco jako PHP bot? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Něco jako PHP bot? – PHP – Fórum – Programujte.comNěco jako PHP bot? – PHP – Fórum – Programujte.com

 

Hunty
~ Anonymní uživatel
48 příspěvků
29. 8. 2014   #1
-
0
-

Ahoj!

Chtěl bych se zeptat, zdali je v PHP nebo v Javascriptu možné udělat něco jako PHP bota. Hned vysvětlím..

Představoval bych si, že user nebo nějaká aplikace spustí php či javascrip a ten odešle nějaká data jiné stránce. Konktérně se jedná o WebAdmin stránku, přes kterou může administrátor posílát zprávy na herní server, či provádět nějaké akce. Musí se tedy přihlásit na svůj účet a poté kliknout na specifické 'buttonky'. :D

Tento script by měl tedy udělat toto:
1. Vypnit username a password do zprávných políček, které jsou v souce kódu uvedeny takto: 
<input class="button" type="text" name="user" id="user" value="">
<input class="button" type="password" name="pw" id="pw" value="">

2. Kliknout na "Login" tlačítko, které je uvedeno takto:
<input class="button" type="submit" name="save" value="Log In">

3. Po tom, co bude přihlášení úspěšné, vyplnit libovolný text do pole uvedeného jako:
<form name="sayform" method="post" target="commandsrc" onsubmit="MBsaybutton_onsubmit();" action="/admin&amp;console=say testing message"><input type="text" name="sayinput" id="sayinput" class="buttonnormal" size="95" onfocus="MBsaybutton_onfocus()" onblur="MBsaybutton_onblur()" onkeypress="MBsaybutton_onkeypress()"></form>
<input type="text" name="sayinput" id="sayinput" class="buttonnormal" size="95" onfocus="MBsaybutton_onfocus()" onblur="MBsaybutton_onblur()" onkeypress="MBsaybutton_onkeypress()">

4. Simulovat kliknutí "Enter" ve výše uvedeném okně.


S PHP a s Javascriptem mám základní zkušenosti, ale myslím si, že bych to s vaší pomocí mohl zvládnout. Programuju spíš v C++, a to už asi 6 let.


Díky moc!
Hunty

Nahlásit jako SPAM
IP: 77.48.87.–
z
~ Anonymní uživatel
268 příspěvků
30. 8. 2014   #2
-
0
-

Ano, jde to. I v tom C++. Po 6 letech bys měl být schopný na to přijít.

Nahlásit jako SPAM
IP: 213.211.51.–
Flowy0
Věrný člen
30. 8. 2014   #3
-
0
-

nebudes priamo zobrazovat stranku a klikat na tlacidla ... namiesto toho si spravis spojenie so serverom kde sa budes tvarit ako webovy prehliadac - prijmes data ktore ti posle a potom odosles odpoved aku potrebujes

Nahlásit jako SPAM
IP: 95.103.149.–
https://github.com/Flowy
Hunty
~ Anonymní uživatel
48 příspěvků
31. 8. 2014   #4
-
0
-

#2 z

"Měl bys na to přijít." Je opravdu užitečná rada. Potřebuji toto udělat v PHP nebo Javascriptu, ne v C++. A ačkoli v C++ programuji už dlouho, neznamená to přeci, že jsem se nutně musel setkat s něčím jako je HTTP request.  

#3 Flowy
Ahoj. Takže vše závisí pouze na HTTP komunikaci a TCP spojení se serverem? Zkoušel jsem i něco z PHP co jsem našel - "POST" - ale bez efektu. Stránka to nepřímá tak jak by měla. (př:www.server.com\login.php?name=username&pass=password).

Pakliže jsi zkušenější s HTTP/HTML, mohl bych poprosit o příklad vyplnění dat do výše uvedených polí?

Děkuji

Nahlásit jako SPAM
IP: 77.48.87.–
Flowy0
Věrný člen
31. 8. 2014   #5
-
+1
-
Zajímavé
Kit +

stranka ti posle formular (v html) a tento obsahuje nejake polia ... ked vyplnis tieto polia a das odoslat tak jedine co sa stane je ze tvoj browser otvori nove http spojenie a posle request s datami ktore potrebujes - v tomto pripade to mozu byt polia z formulara ... data sa vecsinou posielaju cez POST pole v hlavicke http requestu ... to co si spravil je ze si to poslal v GET poli (vela serverov v tom nerobi rozdiel ale asi neni tento pripad) ... este je moznost ze stranka ocakavala aj nieco ine okrem tychto dvoch parametrov ... musis si prejst cely formular na stranke a zistit ako sa posiela

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

ps: takto remapovat request neni dobry napad ... pocitaj s tym ze tymto otvoris pristup k spojeniu medzi tebou a danym serverom

Nahlásit jako SPAM
IP: 95.103.149.–
https://github.com/Flowy
Hunty
~ Anonymní uživatel
48 příspěvků
31. 8. 2014   #6
-
0
-

 Mám v tom pořád zmatek. Už jsem se připojil na stánku a komunikuji s ní přes TCP. (Momentálně používám C++). Posílám tyto řádky:
 

TCP.Send("POST /index.html HTTP/1.1\r\n");
TCP.Send("Host: 213.239.219.93:11490\r\n");
TCP.Send("Connection: Keep-alive\r\n");
TCP.Send("Content-Type: application/x-www-form-urlencoded\r\n");
TCP.Send("Content-length: 25\r\n");
	
TCP.Send("\r\n");
	
TCP.Send("user=myusername&pw=mypassword");

Zdrojový kód stránky (http://213.239.219.93) je tento:


<html><head><title>SWAT 4 Web Admin</title><link href='http://www.markmods.com/webadminstuff/webadmin_css/1.css' rel='stylesheet' type='text/css' /></head><body bgcolor=#000000 onload="document.getElementById('user').focus(); RestoreLogin();"><center><font color=ffffff><h3>SWAT 4 Web Admin</h3></font><form name='loginform' action='/login' method='post' OnSubmit='SaveLogin();'><font color=ffffff>Login</font><br /><font color=ffffff>Username: </font><input class='button' type='text' name='user' id='user' value=''><br><font color=ffffff>Password: </font><input class='button' type='password' name='pw' id='pw' value=''><br><br><font color=ffffff>Remember me: </font><input type='checkbox' name='savepass' id='savepass' value='1' CHECKED><br><input class='button' type='submit' name='save' value='Log In'></form><a href='#none' onClick='ForgetLogin();'>Forget me / Delete cookies</a><br /><font color='#858383'>Sick of those refresh-click-sounds in IE? <br />Goto: 'Control Panel' --> 'Sounds and Audio Devices' --> 'Sounds' --> 'Windows Explorer:Start Navigation'<br /><br />Your browser need to support cookies to login!</font><br><br><font color=ffffff>Mark Mod Web Administration Panel Version 13.1.</font><script type=text/javascript>function getCookie(c_name){if (document.cookie.length>0){	c_start=document.cookie.indexOf(c_name + "=");	if (c_start!=-1){ c_start=c_start + c_name.length+1 ;c_end=document.cookie.indexOf(";",c_start);if (c_end==-1) c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));	} }return "";}function setCookie(c_name,value,expiredays){	var exdate=new Date();	exdate.setDate(exdate.getDate()+expiredays);	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : "; expires="+exdate.toGMTString());}function SaveLogin() { if ( document.getElementById('savepass').checked ){ var user = document.getElementById('user').value; var pw = document.getElementById('pw').value; setCookie("WAIDuser",user,31); setCookie("WAIDpw",pw,31); }else { setCookie("WAIDuser",user,31); setCookie("WAIDuser","",31); setCookie("WAIDpw","",31); } }function RestoreLogin() { if ( getCookie('WAIDuser') != '' && getCookie('WAIDpw') != '' ){ document.getElementById('user').value = getCookie('WAIDuser'); document.getElementById('pw').value = getCookie('WAIDpw'); } }function ForgetLogin() { setCookie("WAIDuser","",31); setCookie("WAIDpw","",31); document.getElementById('user').value = ""; document.getElementById('pw').value = ""; }</script></center></body></html>

Hned když odešlu prázdný řádek, server se mnou spojení ukončí a vůbec nečeká na data.

Nahlásit jako SPAM
IP: 77.48.87.–
z
~ Anonymní uživatel
268 příspěvků
31. 8. 2014   #7
-
0
-

   

<form name='loginform' action='/login' method='post' OnSubmit='SaveLogin();'><font color=ffffff>Login</font>
    <br /><font color=ffffff>Username: </font>
    <input class='button' type='text' name='user' id='user' value=''>
    <br><font color=ffffff>Password: </font>
    <input class='button' type='password' name='pw' id='pw' value=''>
    <br>
    <br><font color=ffffff>Remember me: </font>
    <input type='checkbox' name='savepass' id='savepass' value='1' CHECKED>
    <br>
    <input class='button' type='submit' name='save' value='Log In'>
</form>
function SaveLogin() {
    if (document.getElementById('savepass').checked) {
        var user = document.getElementById('user').value;
        var pw = document.getElementById('pw').value;
        setCookie("WAIDuser", user, 31);
        setCookie("WAIDpw", pw, 31);
    } else {
        setCookie("WAIDuser", user, 31);
        setCookie("WAIDuser", "", 31);
        setCookie("WAIDpw", "", 31);
    }
}
Request Headers

POST /login HTTP/1.1
Host: 213.239.219.93:11490
Connection: keep-alive
Content-Length: 38
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://213.239.219.93
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://213.239.219.93/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en,cs;q=0.8,sk;q=0.6
Cookie: WAIDuser=asd; WAIDpw=qwe

Form Data

user=asd&pw=qwe&savepass=1&save=Log+In

Response Headers

HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Nahlásit jako SPAM
IP: 213.211.51.–
Hunty
~ Anonymní uživatel
48 příspěvků
1. 9. 2014   #8
-
0
-

Super, už se to blíží ke konci. Musel jsem změnit cookie aby mě to správně přihlásilo. Tvá metoda jen refreshla stránku.

Cookie je teď nastaveno jako:

Cookie: WAID=username&password&&&&

Stránka mi už zobrazuje source code, který se mi normálně načte i přes browser po tom, co se přihlásím.
Teď už zbývá jen vyplnit další pole.

 

<form name="sayform" method="post" target="commandsrc" onsubmit="MBsaybutton_onsubmit();" action="/admin&amp;console=say MESSAGE_GOES_HERE">
<input type="text" name="sayinput" id="sayinput" class="buttonnormal" size="95" onfocus="MBsaybutton_onfocus()" onblur="MBsaybutton_onblur()" onkeypress="MBsaybutton_onkeypress()">
</form>
function MBsaybutton_onsubmit()
{
	document.getElementById('sayinput').value = 'Say'; document.getElementById('sayinput').blur();
}

function MBsaybutton_onclick()
{
	document.sayform.action='/admin&console=say '+document.sayform.sayinput.value;
        document.sayform.submit();
	document.getElementById('sayinput').value = 'Say';
	document.getElementById('sayinput').blur();
}

function MBsaybutton_onfocus()
{
	if (document.getElementById('sayinput').value == 'Say' )
		document.getElementById('sayinput').value = '';
}

function MBsaybutton_onblur()
{ 
	if (document.getElementById('sayinput').value == '' )
		document.getElementById('sayinput').value = 'Say';
}

Snažím se poupravit tvůj kód, tak aby to vyplnilo nějaká specifická data.

 

Reuqest Sent:

POST /login HTTP/1.1
Host: 213.239.219.93:11490
Connection: keep-alive
Content-Length: 24
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://213.239.219.93
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://213.239.219.93/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en,cs;q=0.8,sk;q=0.6
Cookie: WAID=username&password&&&&
(/r/n)
Form Data
(/r/n)
sayinput=Testing+message
(/r/n)

Request Recieved:
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
<PAGE_SOURCE_CODE>

HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
<PAGE_SOURCE_CODE>

Nic se ale nestane. Nechápu proč se mi zobrazuje 2x response. (Neměla by být chyba v kódu). Chci se taky zeptat, zda-li posílám správně nevý řádek, vím že u SMTP jsem to taky dělal s \r\n, a pak taky jestli je na správných místech.
 

V čem je chyba teď? Řekl bych, že nějak musím spustit MBsaybutton_onclick(), respektive document.sayform.submit()


Poznámka: V prohlížeči jsem zkoušel zadat "213.239.219.93:11490/admin&console=say+Testing+message", ale stránka se jen refreshne, tudíž bez efektu.

Nahlásit jako SPAM
IP: 77.48.87.–
Hunty
~ Anonymní uživatel
48 příspěvků
1. 9. 2014   #9
-
0
-

Ha, už to funguje!! Díky moc. Nakonec jsem přecijen změnil POST request.

POST /admin&console=say Testing message HTTP/1.1

Stejně by mě ale zajímalo, proč to nefunguje s /login a jak by to mělo být správně.

Nahlásit jako SPAM
IP: 77.48.87.–
Hunty
~ Anonymní uživatel
48 příspěvků
1. 9. 2014   #10
-
0
-

 Tak v PHP bych to měl mít také integrované, ale z nějakého důvodu se nemůžu připojit. Neustále mi to hází

Warning: socket_connect() [function.socket-connect]: unable to connect [110]: Connection timed out in /home/etsclanc/public_html/Bot/sendpublicmsg.php on line 8

<?php

$host    = "213.239.219.93";
$port    = 11490;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket<br>");

$result = socket_connect($socket, $host, $port) or die("Could not connect to server<br>");

....
?>

Když se snažím stejným způsobem připojit třeba na google.com, funguje to. Dělám někde chybu? o.O

Nahlásit jako SPAM
IP: 77.48.87.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Neco jako urlencode v php — založil dfgsdfsdfsdf

Existuje neco jako autoincrement? — založil killermax

Snimani klaves. (neco jako BIND) — založil Pepa Rohlik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý