Pobieranie danych przez fsockopen

Odpowiedz Nowy wątek
2014-12-22 16:32
0

Witam.
Od jakiego czasu próbuję uporać się z pobraniem zawartości strony cenapaliw.pl.
Zrobiłem już kilka kroków naprzód ale... utknąłem :(
Funkcja prawidłowo zwraca zawartość z np. facebook.com ale z cenapaliw.pl już nie.

A tu kod który napisałem:

function HTTPReq($url) {
$fp = fsockopen((parse_url($url,PHP_URL_SCHEME) == 'https' ? 'tcp://' : '').parse_url($url,PHP_URL_HOST), (parse_url($url,PHP_URL_SCHEME) == 'https' ? 443 : 80), $errno, $errstr, 30) or die("$errno: $errstr");
$res='';
 
$out="GET ".parse_url($url,PHP_URL_PATH).(parse_url($url,PHP_URL_QUERY) == '' ? '' : '?'.parse_url($url,PHP_URL_QUERY))." HTTPS/1.1\r\n";
$out.="Host: ".parse_url($url,PHP_URL_HOST)."\r\n";
$out.="User-Agent: Mozilla/5.0 Firefox/34.0.1\r\n";
$out.="Accept: */*\r\n";  
$out.="Accept-Language: pl;q=0.8,en-US;q=0.5,en;q=0.3\r\n";   
$out.="Connection: Close\r\n\r\n";
fwrite($fp, $out);
while(!feof($fp)) {
$res.=fgets($fp, 128);
}
fclose($fp);
 
$result = explode("\r\n\r\n",$res,2);
return $result;
}

Odpowiedź:

HTTP/1.1 400 Bad Request
Server: cloudflare-nginx
Date: Mon, 22 Dec 2014 12:13:43 GMT
Content-Type: text/html
Content-Length: 177
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare-nginx</center>
</body>
</html>

Macie może jakieś pomysły ?

Pozostało 580 znaków

2014-12-22 18:04
0

Nie wynajdywać koła od nowa i użyć jakiegoś cURLa bądź innej biblioteki.

BTW: pamiętaj, że nie możesz tak o, podpieprzać sobie danych od innych. Jeżeli cenapaliw.pl udzieli Ci zgody na wykorzystanie ich danych, to zapewne z chęcią udostępnią Ci też proste API do pobierania tych danych.


Pozostało 580 znaków

2014-12-22 19:23
0

@dzek69: Mi nie chodzi o to żeby "podpieprzać" dane a chcę je aktualizować.
Np. moja strona -> własna baza -> fsockopen -> cenapaliwa.pl
Niestety ale hosting ma zablokowany cURL.
cenapaliw.pl nie ma API.

Polecisz jakąś bibliotekę ? :)
Nie działającą przez cURL...

Pozostało 580 znaków

2014-12-22 19:28
0

To może odżałuj lepszej pizzy i sobie kup porządny hosting? Na darmówkach to i tak nie ma sensu na dłuższą metę.

Jeżeli piszesz automat, który ma pomóc cenapaliwa.pl w utrzymaniu aktualnych danych to odezwij się do nich na kontakt - dogadajcie się.


Pozostało 580 znaków

2014-12-22 19:42
0

@dzek69: nie chodzi mi o automat tylko jak wprowadzę dane na swojej stronie to żeby zapisały się na w bazie danych i za pomocą fsockopen przesłać dane dalej na cenapaliw.pl

Pozostało 580 znaków

2014-12-22 19:55
0

To też jest automat :p Automatycznie przesyła dane dalej, nie musisz tego robić ręcznie.


Pozostało 580 znaków

2014-12-22 21:07
0

Ok zgoda automat :)

Pozostało 580 znaków

2014-12-27 10:35
lhp
0

jeśli chcesz tylko czytać, zrób to tak :)

file_get_contents('http://cenapaliwa.pl/');

Pozostało 580 znaków

2014-12-30 03:47
0

@lhp:

  1. file_get_contents

    nic nie zwraca :)

  2. Chcę też aktualizować dane :)

Pozostało 580 znaków

2014-12-30 13:44
0

Aby file_get_contents działało i pobierało dane z adresu url musisz mieć włączone allow_url_fopen w php.ini na Twoim serwerze. Jeśli męczysz się na darmowym serwerze, to raczej na pewno masz tę opcję zablokowaną.

[Mirek]


Jeden zespół, tysiące możliwości!
Proszę zapoznać się z tematem przed odpisywaniem. Przeczytanie ostatniego posta NIE wystarcza. - dzek69 2014-12-30 13:52

Pozostało 580 znaków

2015-03-15 13:15
0

Po dwóch miesiącach comeback i...

  1. @kchteam: funkcja

    file_get_contents

    mi działa prawidłowo :)

  2. dzek69 napisał(a):

    To może odżałuj lepszej pizzy i sobie kup porządny hosting?

@dzek69: Odżałowałem... Kupiłem porządny hosting... i... problem ten sam xD

  1. Problemem nie był jednak serwer czy funkcją fsockopen / file_get_contents a... brak parametru Accept-Encoding: ...
No ale jest cURL na tym hostingu, czy kupiłeś złoma? ;] - dzek69 2015-03-15 13:36
Jest tylko nie wiem czy jest sens go trzymać dla jednego skryptu :] - PiDev 2015-03-15 13:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0