Autor Zpráva
gardener
Profil
Zdravím,
Napsal jsem si skript pro odesílání SMS přes VODAFONE bránu pomocí curl, pomocí reguláru si stahnu obrayek captchz, který bych pak umisťoval do formu k osotním polím (teď jsoui tam hodnotz nastavenz "natvrdo") jenže se asi určitě setkám s problémem, že když načtu captchu do formu, ten pak odešlu, tím zavolám request, tak už captcha nebude platit..no a takže bych se chtěl zeptat jak toto vyřešit?
Tuším, že k tomu budou potřeba cookies, ale nevím už jak to prakticky skloubit s tím requestem.

Díky za každou radu:
<?php
$website="http://www.vodafonesms.cz/";
$obsah=file_get_contents("$website","r");
//Regularni vyraz pro skite pole ze ktereho bereme ID pro obrazek, jelikoz jsou shodna
if(preg_match("<input type=\"hidden\" name=\"imgid\" value=\".*\" />",$obsah,$nalezene))
echo("Zaznam nalezen<br/>");
else
{echo("Zaznam nenalezen");}
//Orizneme na 32 znaku tj.delka id kodu
$kod=(substr($nalezene[0],40,32));
//Nacteme obrazek
echo("<img src=\"$website/imgcode.php?id=$kod\" alt=\"Číselný kód\" />");
//echo($obsah);

//pokus.html?mynumber=&odeslat=Submit+Query
//inicializace promenne pro request
$request = "";
//cislo prijemnce
$param["number"] = "774087834";
//cislo odesilatele
$param["mynumber"] = "724915128";
//jmeno
$param["sender"] = "Honza";
//zprava
$param["message"] = "Toto je pokusna zprava";
//Zde bude predana hodnota captchy kterou nacitam pomoci regularu
$param["pictogram"] = "opisi_z_captchy";

foreach($param as $key=>$val){
	//mame ulrencode hodnoty
	$request.= $key."=".urlencode($val);
	//pripojime ampersand (&) za kazdy parametr nebo hodnotu
	$request.= "&";
}
//odtranime posledni ampersand z requestu
$request = substr($request, 0, strlen($request)-1);

//ZACATEK CURL REQUESTU
//Cesta k odesilacimu formu
$url = "http://www.vodafonesms.cz/send.php";
//INICIALIZUJEM CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //set the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //return as a variable
curl_setopt($ch, CURLOPT_POST, 1); //set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); //set the POST variables[tj.promenne predavane z naseho formu]
$response = curl_exec($ch); //run the whole process and return the response
curl_close($ch); //close the curl handle
echo $response;
                     
?>  
Majkl578
Profil
nemaji to osetrene pres session, resi to pres ID obrazku. a to je tva vyhra. stejne id vypada sice pokazde jinak, ale kod je stejny. tudiz musis preposilat skryty input "imgid"s hodnotou toho ID, dal to co uzivastel opise...
gardener
Profil
o.k diky a jen pro zajimavost, jak by se to tedy resilo pomoci session? Protoze treba jine brany to tak mit budou...
Majkl578
Profil
to by asi zalezelo na tom jak maji session osetrene. pokud by o osetrovali i pomoci IP, tak by to bylo asi slozitejsi (nevim, zda curl umi nastavit jinou IP nez lokalniho stroje ze ktereho se pripojuje)
gardener
Profil
Tak bohuzel i kdyz odesilam ten hidden input, tak dostanu zpet hlasku, ze captcha nebyla spravne opsana, pritom posilam jak jeji ospanou hodnotu, tak i skryte pole "imgid"..tak me tak napada, jestli neni treba odesilat vsechny skryta pole, tj i to co j epod nim s nazvem ppp?:
<input type="hidden" name="ppp" value="124239567624759:0bc9a307a7ba9caf485e94efb1ba28f7" />

Jinak nevim kde by jinde mohla byt chyba a porad me to nuti premejslet nat tema cookies..preci, kdyz si obraxek stahnu ma sice stejne id ale jiny text, nez kdyz delam request ne?

Kod vypada zatim takto>

Diky za jakoukolliv radu..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Author" content="Jiří Vávrů-jirivavru.com" />
<title>SMS_sender_VF</title>
</head>

<body>
<?php
$website="http://www.vodafonesms.cz/";
$obsah=file_get_contents("$website","r");
//Regularni vyraz pro skite pole ze ktereho bereme ID pro obrazek, jelikoz jsou shodna
if(preg_match("<input type=\"hidden\" name=\"imgid\" value=\".*\" />",$obsah,$nalezene))
echo("Zaznam nalezen<br/>");
else
{echo("Zaznam nenalezen");}
//Orizneme na 32 znaku tj.delka id kodu
$kod=(substr($nalezene[0],40,32));
//Nacteme obrazek(Vypisuji ho nyni pod formem)
//echo("<img src=\"$website/imgcode.php?id=$kod\" alt=\"Číselný kód\" />");
if(!empty($_POST)){//Pokud formular odesleme
//pokus.html?mynumber=&odeslat=Submit+Query
//inicializace promenne pro request
$request = "";
//Skryty imageid input
$param["imgid"]="$kod";
//cislo prijemnce
$param["number"] = ($_POST["number"]) ;
//cislo odesilatele
$param["mynumber"] = ($_POST["mynumber"]) ;
//jmeno
$param["sender"] = ($_POST["sender"]) ;
//zprava
$param["message"] = ($_POST["message"]) ;
//Zde bude predana hodnota captchy kterou nacitam pomoci regularu
$param["pictogram"] = ($_POST["pictogram"]) ;

foreach($param as $key=>$val){
	//mame ulrencode hodnoty
	$request.= $key."=".urlencode($val);
	//pripojime ampersand (&) za kazdy parametr nebo hodnotu
	$request.= "&";
}
//odtranime posledni ampersand z requestu
$request = substr($request, 0, strlen($request)-1);

//ZACATEK CURL REQUESTU
//Cesta k odesilacimu formu
$url = "http://www.vodafonesms.cz/send.php";
//INICIALIZUJEM CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //set the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //return as a variable
curl_setopt($ch, CURLOPT_POST, 1); //set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); //set the POST variables[tj.promenne predavane z naseho formu]
$response = curl_exec($ch); //run the whole process and return the response
curl_close($ch); //close the curl handle
echo $response;
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" >
<fieldset>
<label for="number">Cislo prijemce:</label><br/>
<input name="number" type="text" value="" name="number" /><br/>
<label for="mynumber">Vase cislo:</label><br/>
<input name="mynumber" type="text" value="" name="mynumber" /><br/>
<label for="sender">Vase jmeno:</label><br/>
<input name="sender" type="text" value="" name="sender" /><br/>
</fieldset>
<fieldset>
<label for="message">Zprava:</label><br/>
<textarea wrap="OFF" maxlength="160" name="message" id="message"></textarea><br/>

<?php echo("<img src=\"$website/imgcode.php?id=$kod\" alt=\"Číselný kód\" />"); ?><br/>
<label for="sender">Opiste Captchu:</label><br/>
<input name="pictogram" type="text" value="" name="pictogram" /><br/>
<input  type="submit" name="submit" value="Posli" />
</fieldset>
</form>
</body>
</html>
gardener
Profil
Nikdo netuší?
Tomac1
Profil *
Tak nám bránu přesunuli. Curl přestal fungovat. Imgid už nevím jak získat.
Neví někdo jak obejít tu první stránku park.vodafone.cz?
Jak to má třeba www.asms.cz? Hergot to by mě teda zajímalo.
w1pko
Profil *
na park vodafone sa dokazem dostat tak, ze som sa zaregistroval, pri prihlaseni som zaskrtol, nefc si ma pamata, potom som si vyextrahoval cookies, a ulozil do suboru...

pomocou cURL sa tam teraz v pohode dostanem:

curl --cookie cookies.txt -L -d "id24_hf_0=&recipients%3ArecipientInput=774243254&text=test&proof%3Afield=51&sendButton=1" https://park.vodafone.cz/gateway.3;

(tie data, co posielam su POST data, ktore som si odchytilz headerov pri odoslani spravy.)...problemom je, ze mi to vracia zase len tu stranku, kde sa posielaju sms a smska nechodi. ..neviem, kde je problem, ale overovacie funkcie a submit button maju riesene cez javascript....vie niekto, co s tym?
dik!

(kod nie je php, ale klasicky prikaz do promptu v linuxe)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0