Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ominięcie reklamy
Forum PHP.pl > Forum > Przedszkole
daniei
Witam!

Poruszam znany już temat na forum, a mianowicie pobieranie danych z filmweb'u i problem z wyskakującą reklamą przed wejściem na pożądaną stronę...

Użytkownik: Kicok
Napisał pewne rozwiązanie tego problemu w tym wątku (http://forum.php.pl/index.php?showtopic=101562) ale z racji jeszcze małego doświadczenie w pisaniu czegoś bardziej zaawansowanego nawet z taką podpowiedzią nie mogę sobie poradzić :/

  1. <?php
  2.  
  3.  
  4. $fp = fsockopen( 'serwer.com', 80, $errno, $error, 5 );
  5. if( !is_resource( $fp ) )
  6. {
  7. die( "Wystąpił błąd połączenia z sewerwem<br><br>$error" );
  8. }
  9.  
  10.  
  11. $headers = "GET /strona.php?param1=" . rawurlencode( "wart1" ) . "&param2=" . rawurlencode( "wart2" ) . " HTTP/1.1\n";
  12. $headers .= "Host: serwer.com\n";
  13. $headers .= "Connection: Close\n";
  14. $headers .= "Cookie: nazwa1=" . rawurlencode( "wartość1" ) . "; nazwa2=" . rawurnencode( "wartość2" ) . "\n";
  15. $headers .= "\n";
  16.  
  17.  
  18. fwrite( $fp, $headers );
  19.  
  20. $response = '';
  21. while( !feof( $fp ) )
  22. {
  23. $response .= fread( $fp, 256 );
  24. }
  25. fclose( $fp );
  26.  
  27.  
  28.  
  29. echo '<pre>';
  30. echo htmlspecialchars( $response );
  31. echo '</pre>';
  32.  
  33. ?>

Jeżeli może ktoś pomóc mi z tym problemem będę bardzo wdzięczny gdyż jak na razie mogę korzystać ze swojego skryptu jedynie gdy nie ma reklamy :/

Pozdrawiam!
evolucja
Musisz zmienić po prostu te wartości:
  1. $fp = fsockopen( 'serwer.com', 80, $errno, $error, 5 );
  2. $headers = "GET /strona.php?param1=" . rawurlencode( "wart1" ) . "&param2=" . rawurlencode( "wart2" ) . " HTTP/1.1\n";
  3. $headers .= "Host: serwer.com\n";
  4. $headers .= "Cookie: nazwa1=" . rawurlencode( "wartość1" ) . "; nazwa2=" . rawurnencode( "wartość2" ) . "\n";

i będzie działać smile.gif W 1 podajesz adres strony czyli filmweb.pl, w 2 link do filmu i opcjonalne parametry, w 3 jeszcze raz adres i w 4 ciasteczka(musisz sam sprawdzić które są potrzebne).
daniei
Wydaje mi się że zrobiłem to co kolega evolucja kazał ale zamiast strony wyświetla mi się:

  1. <pre>HTTP/1.1 301 Moved Permanently
  2. Set-Cookie: jetbackup=0;path=/;domain=.filmweb.pl
  3. Date: Wed, 21 Jul 2010 11:01:07 GMT
  4. Location: <a href="http://www.filmweb.pl/Matrix" target="_blank">http://www.filmweb.pl/Matrix</a>
  5. Connection: close
  6. Server: Apache
  7.  
  8. </pre>
  9.  


I co dalej ?
evolucja
Nie wiem czy w tej metodzie jest jakaś opcja Followlocation. Nie masz możliwości zrobić tego na curlu? To już jest przecież powszechnie dostępna opcja smile.gif
daniei
Masz na myśli coś takiego? http://forum.php.pl/index.php?showtopic=41...p;mode=threaded
W sumie to wziąłem się za file_get_contents() i wyciąganie poszczególnych rzeczy... działało to nie zmieniałem... a teraz denerwują mnie te reklamy i chce swobodnie korzystać ze skryptu nawet jeśli one są...
evolucja
Tak smile.gif Mam na myśli coś takiego. Tylko ten skrypt musiałbyś trochę pozmieniać, bo on jest stary. Na pewno dodać musisz do opcji curla ciasteczka. Najlepiej zrób najpierw pobieranie strony z filmem, a potem łuskaj sobie z tego dane. To znaczy wywal niepotrzebne fragmenty z tamtego skryptu i zostaw tylko GetData.
daniei
Mam mały problem i nie wiem kompletnie co jest źle :/
Dla przetestowania zapisałem sobie źródło strony w swoim pliku i próbowałem z wałasnego pliku pobrać to właśnie źródło no ale nic nie idzie i nic nie wywala ...

  1. <?php
  2. $url = 'http://localhost/t4.php';
  3. function getData( $url, $type = 'array' )
  4. {
  5.  
  6.  
  7. $data = '';
  8.  
  9. if( !extension_loaded( 'curl' ) )
  10. {
  11. @dl( 'curl' );
  12. }
  13.  
  14. if( extension_loaded( 'curl' ) )
  15. {
  16. $curl = curl_init();
  17.  
  18. curl_setopt( $curl, CURLOPT_URL, $url );
  19. curl_setopt( $curl, CURLOPT_HEADER, false );
  20. curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
  21. curl_setopt( $curl, CURLOPT_FORBID_REUSE, true );
  22. curl_setopt( $curl, CURLOPT_FRESH_CONNECT, true );
  23. curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
  24. curl_setopt( $curl, CURLOPT_TIMEOUT, 25 );
  25.  
  26. $data = curl_exec( $curl );
  27.  
  28. curl_close( $curl );
  29. }
  30. else
  31. {
  32. $data = file( $url );
  33. }
  34.  
  35.  
  36. if( ( $type == 'array' ) and !is_array( $data ) )
  37. {
  38. $data = explode( "\n", $data );
  39. }
  40.  
  41. return $data;
  42. }
  43.  
  44.  
  45. print_r(getData($url));
  46.  
  47. ?>




EDIT

Już działa pobieranie stronki... okazało się że funkcja była wyłączona... dziwne że nie wywalało żadnego błędu... eh.
Teraz jeszcze te cookie.

EDIT

Skrypt już działa. Omija reklamę... poniżej wklejony pobiera i wyświetla podaną przez nas stronkę... może się komuś przyda.
Wielkie podziękowania dla evolucja!

  1. <?php
  2. $url = 'stronke.któą.pobieramy';
  3. function getData( $url, $type = 'array' )
  4. {
  5. $data = '';
  6.  
  7. if( !extension_loaded( 'curl' ) )
  8. {
  9. @dl( 'curl' );
  10. }
  11.  
  12. if( extension_loaded( 'curl' ) )
  13. {
  14. $curl = curl_init();
  15.  
  16. curl_setopt( $curl, CURLOPT_URL, $url );
  17. curl_setopt( $curl, CURLOPT_HEADER, false );
  18. curl_setopt( $curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  19. curl_setopt( $curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  20. curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
  21. curl_setopt( $curl, CURLOPT_FORBID_REUSE, true );
  22. curl_setopt( $curl, CURLOPT_FRESH_CONNECT, true );
  23. curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
  24. curl_setopt( $curl, CURLOPT_TIMEOUT, 25 );
  25.  
  26. $data = curl_exec( $curl );
  27.  
  28. curl_close( $curl );
  29. }
  30. else
  31. {
  32. $data = file( $url );
  33. }
  34.  
  35.  
  36. if( ( $type == 'array' ) and !is_array( $data ) )
  37. {
  38. $data = explode( "\n", $data );
  39. }
  40.  
  41. return $data;
  42. }
  43. print_r(getData($url));
  44. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.