Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

cURL login na ASPX stranicu

[es] :: PHP :: cURL login na ASPX stranicu

[ Pregleda: 1587 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Alexxandar
Aleksandar Jovanović
Freelancer/Part time developer
127.0.0.1

Član broj: 16375
Poruke: 84
*.dynamic.sbb.rs.



+59 Profil

icon cURL login na ASPX stranicu17.03.2010. u 22:06 - pre 171 meseci
Potrebno mi je da skripta uradi sledeće:
Uloguje se na sajt, ode na jednu stranicu i sa te stranice downloaduje zip fajl.

Očigledno je da sam se zaglavio sam kod ovog prvog:
Sumnjam na to da mi nešto nedostaje... ima li neko ideju gde grešim.

Code:
<?php

$cookie_file_path = '/Users/Alexxandar/Documents/WWW/$temp/ppg.txt'; 
$url ="http://ppg.canadatrader.com/login.aspx";

$fp = fopen("$cookie_file_path","w");
fclose($fp);
$ch = curl_init();


curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result = curl_exec ($ch);

$doc = new DOMDocument();
@$doc->loadHTML($result);

$viewstate = inputValueById($doc, '__VIEWSTATE');
$eventvalidation = inputValueById($doc, '__EVENTVALIDATION');

$postArray = array(
    'ctl00$PageContentPlaceHolder$LoginBrown$frmUserName' => 'username',
    'ctl00$PageContentPlaceHolder$LoginBrown$frmPassword' => 'password',
    '__EVENTTARGET' => '',
    '__EVENTARGUMENT' => '',
    'ctl00$PageContentPlaceHolder$LoginBrown$btnLogin' => '',
    '__EVENTVALIDATION' => $eventvalidation,
    '__VIEWSTATE' => $viewstate
);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArray);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
$result = curl_exec ($ch);

echo "<hr />" . $result . "<hr />";


curl_close ($ch);

function inputValueById($DOMdoc, $id)
{
    $xpath = new DOMXPath($DOMdoc);
    $element =  $xpath->query("//*[@id='$id']")->item(0);

    foreach ($element->attributes as $attrName => $attrNode)
    {
        if($attrName == 'value')
        {
            return $attrNode->value;
        }
    }
}

?>
 
Odgovor na temu

Alexxandar
Aleksandar Jovanović
Freelancer/Part time developer
127.0.0.1

Član broj: 16375
Poruke: 84
*.dynamic.sbb.rs.



+59 Profil

icon Re: cURL login na ASPX stranicu17.03.2010. u 23:55 - pre 171 meseci
Rešio... može da se zatvara ;)

Live HTTP Headers ekstenzija za Firefox me je usmerila ka rešenju.

Ako nekome ikada zatreba...

HTML input element tipa image šalje koordinate na koje je kliknuto unutar slike.

Tako da je meni nedostajalo:
Code:

    'ctl00$PageContentPlaceHolder$LoginBrown$btnLogin.x' => '27',
    'ctl00$PageContentPlaceHolder$LoginBrown$btnLogin.y' => '43',


Ne znam zašto je taj podatak imalo bitan... ali ovde je bio dovoljno bitan da sve koči.
 
Odgovor na temu

[es] :: PHP :: cURL login na ASPX stranicu

[ Pregleda: 1587 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.