Mam pytanie, jak pobrać ze strony obrazek tworzony dynamicznie i zapisać go na swoim serwerze? dokładnie to chodzi mi o http://nasza-klasa.pl/captcha , pobieranie poprzez curl pokazuje tylko zawartość strony głównej.
--21:05:06-- http://nasza-klasa.pl:80/captcha
=> `captcha'
Connecting to nasza-klasa.pl:80... connected!
HTTP request sent, awaiting response... 403 Forbidden
21:05:07 ERROR 403: Forbidden.
Ot, cwaniaki... Mają jakieś różnorakie zabezpieczenia przeciwko ściąganiu tej strony i ogólnie pisanie kolejnego bota jest żałosne.
Prześledź trasę jaką przebywa cURL z twojego serwera do NK, może są jakieś redirecty. (Np. 301 bo potraktowali Cię jak google)
Wygląda na to, że sprawdzają tylko nagłówek user-agent:
wget -U "firefox" http://nasza-klasa.pl/captcha
--2009-04-07 1102-- http://nasza-klasa.pl/captcha
Translacja nasza-klasa.pl... 195.93.178.5, 195.93.178.6
Connecting to nasza-klasa.pl|195.93.178.5|:80... połączono.
Żądanie HTTP wysłano, oczekiwanie na odpowiedź... 200 OK
Długość: nieznana [image/png]
Saving to: `captcha.1'
[ <=> ] 1.608 --.-K/s in 0s
2009-04-07 1102 (109 MB/s) - `captcha.1' saved [1608]
Spróbuj wysłać nagłówek user-agent udający przeglądarkę ;)
Daje useragenta, w ten sposób:
$cookie = "blabla.txt";
$useragent = 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/200760426 Firefox/1.5.0.3';
// logowanie na nk
$ch = curl_init( $loginUrl );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_COOKIE, $cookie);
curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
curl_setopt( $ch, CURLOPT_REFERER, 'http://nasza-klasa.pl/captcha' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$afterLogin = curl_exec($ch);
curl_close($ch);
mimo to zawartość $afterLogin to źródło strony głównej
[edycja]
Mój błąd. Już działa. Jak by ktoś szukał :
<?
$useragent = 'Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.0.3) Gecko/200760426 Firefox/1.5.0.3';
// logowanie na nk
$ch = curl_init( 'http://nasza-klasa.pl/captcha' );
curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
curl_setopt( $ch, CURLOPT_REFERER, 'http://nasza-klasa.pl/captcha' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$afterLogin = curl_exec($ch);
curl_close($ch);
echo $afterLogin;
?>