• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[PHP] odczyt strony / parsowanie metodą CURL po https

Object Storage Arubacloud
0 głosów
430 wizyt
pytanie zadane 16 września 2020 w PHP przez itcloud Gaduła (3,380 p.)

Od 2h męczę się z tym, odkąd strona którą parsuję przeszła na https. Jak to zrobić? Poniższy skrypt który znalazłem i lekko zmodyfikowałem nie działa.

$url = 'https://.......';

// In this example we are referring to a page that handles xml
$headers = array( "Content-Type: text/html",);

// Initialise Curl
$curl = curl_init();
if ($curl === false)
{
    throw new Exception(' cURL init failed');
}

// Configure curl for website
curl_setopt($curl, CURLOPT_URL, $url);

// Set up to view correct page type
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
// Turn on SSL certificate verfication

curl_setopt($curl, CURLOPT_CAPATH, "inc/cacert.pem");  //pobrany plik z różnymi CA
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);

// Tell the curl instance to talk to the server using HTTP POST
curl_setopt($curl, CURLOPT_POST, 1);

// 1 second for a connection timeout with curl
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);

// Try using this instead of the php set_time_limit function call
curl_setopt($curl, CURLOPT_TIMEOUT, 60);

// Causes curl to return the result on success which should help us avoid using the writeback option
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

echo $result = curl_exec($curl);

 

komentarz 16 września 2020 przez Artek Stary wyjadacz (11,800 p.)
Nie działa, bo? Coś więcej napisz.
komentarz 16 września 2020 przez itcloud Gaduła (3,380 p.)
No nic się nie pojawia, pusta strona bez błędu
komentarz 16 września 2020 przez itcloud Gaduła (3,380 p.)
edycja 16 września 2020 przez itcloud
Tzn. wprowadziłem w błąd. Pojawia się np. strona onetu! https://onet.pl

ale inna strona https:// nic nie zwraca. Dokładnie to:  https://asseco.pl

Jakieś zabezpieczenie przed curlem? Można to jakoś obejść, tzn są inne metody ?

1 odpowiedź

0 głosów
odpowiedź 17 września 2020 przez Bosswell Nałogowiec (36,470 p.)

"Nie zwraca" ponieważ natrafiłeś na kod 301, a twój skrypt nie śledzi przekierowań. Musisz dodać:

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

 

komentarz 17 września 2020 przez itcloud Gaduła (3,380 p.)
zauwazylem ze jest przekierowanie, ale nie dziala nadal. Jak dodałem to co podałeś, albo jak podałem adres docelowy.
komentarz 17 września 2020 przez Bosswell Nałogowiec (36,470 p.)
U mnie działa :)
1
komentarz 17 września 2020 przez Bosswell Nałogowiec (36,470 p.)
Odkomentuj w php.ini

extension=php_openssl.dll

Poczytaj:

https://thisinterestsme.com/php-curl-ssl-certificate-error/
komentarz 17 września 2020 przez itcloud Gaduła (3,380 p.)

U mnie ten kod nie, a jak zmienie na onet to onet sie ładnie parsuje.

$url = 'https://asseco.pl';
//$url = 'https://www.onet.pl';

// In this example we are referring to a page that handles xml
$headers = array( "Content-Type: text/html",);

// Initialise Curl
$curl = curl_init();
if ($curl === false)
{
    throw new Exception(' cURL init failed');
}

// Configure curl for website
curl_setopt($curl, CURLOPT_URL, $url);

// Set up to view correct page type
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
// Turn on SSL certificate verfication

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($curl, CURLOPT_CAPATH, "inc/cacert.pem");
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);

// Tell the curl instance to talk to the server using HTTP POST
//curl_setopt($curl, CURLOPT_POST, 1);

// 1 second for a connection timeout with curl
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);

// Try using this instead of the php set_time_limit function call
curl_setopt($curl, CURLOPT_TIMEOUT, 60);

// Causes curl to return the result on success which should help us avoid using the writeback option
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

echo $result = curl_exec($curl);

 

komentarz 17 września 2020 przez Bosswell Nałogowiec (36,470 p.)
Jakiej wersji php używasz?
komentarz 17 września 2020 przez itcloud Gaduła (3,380 p.)
5.3.5, wiem że stara, ale przyzwyczaiłem się.
komentarz 17 września 2020 przez Bosswell Nałogowiec (36,470 p.)
U mnie ten kod działa poprawnie. Jeżeli używasz xampp-a, to spróbuj pobrac najnowsza paczkę.
1
komentarz 17 września 2020 przez Bosswell Nałogowiec (36,470 p.)
:) zbyt dużo niewiadomych przy tej wersji
komentarz 17 września 2020 przez itcloud Gaduła (3,380 p.)
tak, miales racje, na serwerze gdzie mam php 7 dziala :) Ok, na kompie spróbuję zainstalować w miejsce obecnej wersji nowsza, tylko sie boje tych nowych wersji, ze nie ma kompatybilnosci wstecznej i bede musial duzo w kodzie poprawiac.
komentarz 17 września 2020 przez itcloud Gaduła (3,380 p.)
edycja 17 września 2020 przez itcloud
problemem jest php_curl.dll w wersji 7.20 - próbowałem niby pobrać w wersji wyższej, ale jak podmieniam w php/ext to mi w ogóle nie wykrywa. Wracam do niższej i phpinfo pokazuje. Czy ktoś może mi udostępnić taką dllkę która mu działa, w wersji wyższej niż 7.20 ? Pod win10, mam tam apache 2.0.

ps. bo jak próbowałem dać inny php_curl.dll z wyzszych wersji, to mimo wpisu w php.ini dot. extension, ta dll-ka się nie ładuje w ogóle. A jak zmieniam cala wersje php na wyzsze wersje, to apache 2.0 w ogóle nie startuje, w logach nie ma nawet zadnego wpisu.

Podobne pytania

0 głosów
1 odpowiedź 466 wizyt
pytanie zadane 1 lutego 2019 w PHP przez malyGostek Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 289 wizyt
0 głosów
1 odpowiedź 963 wizyt
pytanie zadane 25 kwietnia 2019 w PHP przez sensor Użytkownik (640 p.)

92,550 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...