Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][cURL] Omijanie raklamy
Forum PHP.pl > Forum > PHP
botnaizi
Witam.

Zastanawiam się jak ominąć reklamy które występują przed otwarciem faktycznej strony. Chodzi mi o wyciągnięcie poszczególnych informacji z filmweb'u tylko , że pobierając stronę tym skryptem wyświetla mi reklamy.

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. </head>
  7.  
  8. <body>
  9. <form method="post">
  10. <input type="text" name="url" />
  11. <input type="submit" value="submit" />
  12. </form>
  13. <?php
  14.  
  15. $strona = $_POST['url'];
  16. if($_POST['url']!="") {
  17. $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
  18.  
  19.  
  20.  
  21. $rC = curl_init();
  22. curl_setopt($rC, CURLOPT_HEADER, 0);
  23. curl_setopt($rC, CURLOPT_RETURNTRANSFER, 1);
  24. curl_setopt($rC, CURLOPT_VERBOSE, 0);
  25. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  26. curl_setopt($rC, CURLOPT_REFERER, 'www.google.pl');
  27. curl_setopt($rC, CURLOPT_URL, "$strona");
  28.  
  29. $wejscie = curl_exec($rC);
  30.  
  31. curl_close($rC);
  32. preg_match('/<span class="center">(.+?)<\/center>/ism', $wejscie, $wyjscie);
  33.  
  34. echo $wejscie;
  35.  
  36. }
  37.  
  38. ?>
  39. </body>
  40. </html>



Jak nakazać skryptowi aby wszedł w link "Przejdź do filmweb" ?
Pojęcie o cURL'u mam znikome i raczej sam na to nie wpadnę smile.gif

Pozdrawiam
wookieb
Sprawdź jaki kod ma reklama i znajdź kluczowe tagi.
Poza tym po co kopiujesz treść z filmwebu?
botnaizi
Relama jest jakby oddzielną stroną, trzeba kliknąć "Przejdź do filmwebu" aby przeniosło na stronę o którą mi chodzi. Ale jak to zrobić ? ;] Gdyby było to o co mi chodzi ukryte pod reklamą nie byłoby problemu bo odfiltrowałbym sobie to co potrzebuję tak samo link ale nie wiem jak przejść na daną stronę. Wchodząc z komputera normalnie mi wyświetla zaś ze skryptu wyświetla odrazu i cały czas reklamę. Jak można byłoby to ominąć ?


Pozdrawiam smile.gif
Pilsener
Cytat
aby przeniosło na stronę o którą mi chodzi
- to dlaczego od razu nie pobierzesz tej strony?
Berg
Reklama na Filmwebie opiera się pewnie na sesji, sprawdzają kiedy ostatni raz odwiedzałeś serwis i w razie czego wyświetlają reklamę. W Twoim skrypcie nie widzę włączonej obsługi ciasteczek więc każde wczytanie strony liczone jest przez FW jako nowy użytkownik dla którego trzeba wyświetlić reklamę. Dodaj obsługę ciastek (znajdziesz to w pierwszym lepszym tutorialu o curl, z tego co pamiętam jest też o tym cały osobny tutorial na php.pl) i przy wejściu wykrywaj czy na stronie wyświetlany jest napis "Przejdź do filmweb" - jeśli tak to wczytaj stronę ponownie. Powinno śmigać winksmiley.jpg

@Pilsener
Na FW reklama znajduje się pod tym samym adresem co żądana strona. Po prostu zamiast docelowej strony wyświetlają reklamę smile.gif
botnaizi
Tak zerkałem tutaj : http://wortal.php.pl/wortal/artykuly/php/b...ol_http/ciastka smile.gif Przerobiłem skrypt do tego :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. </head>
  7.  
  8. <body>
  9. <form method="post">
  10. <input type="text" name="url" />
  11. <input type="submit" value="submit" />
  12. </form>
  13. <?php
  14.  
  15. $strona = $_POST['url'];
  16. if($_POST['url']!="") {
  17. $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
  18.  
  19.  
  20.  
  21. $rC = curl_init();
  22. curl_setopt($rC, CURLOPT_HEADER, 1);
  23. curl_setopt($rC, CURLOPT_COOKIEFILE, 'cookies.txt');
  24. curl_setopt($rC, CURLOPT_COOKIEJAR, 'cookiesjar.txt');
  25. curl_setopt($rC, CURLOPT_RETURNTRANSFER, 1);
  26. curl_setopt($rC, CURLOPT_VERBOSE, 0);
  27. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  28. curl_setopt($rC, CURLOPT_REFERER, 'www.google.pl');
  29. curl_setopt($rC, CURLOPT_URL, "$strona");
  30.  
  31. $wejscie = curl_exec($rC);
  32.  
  33. curl_close($rC);
  34. preg_match('/<span class="center">(.+?)<\/center>/ism', $wejscie, $wyjscie);
  35.  
  36. echo $wejscie;
  37.  
  38. }
  39.  
  40. ?>
  41. </body>
  42. </html>


Dodałem pliki cookies.txt i cookiesjar.txt i nadałem im chmod'y 777 Ale i tak nie osiąga to efektu.
Może ktoś ma inne pomysły jak to zrobić ?
Berg
Wywołaj curl_exec 2 razy. Drugie wywołanie powinno zwrócić treść bez reklamy. Tylko pomiędzy 2 wywołaniami ustaw REFERER na stronę pod którą próbujesz wejść.
botnaizi
@Berg: A mógłbyś przerobić trochę ten skrypt bo nie wiem jak to zrobić smile.gif Jak już pisałem nie bardzo w ogóle potrafię coś w cURL'u napisać smile.gif
Berg
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. </head>
  7.  
  8. <body>
  9. <form method="post">
  10. <input type="text" name="url" />
  11. <input type="submit" value="submit" />
  12. </form>
  13. <?php
  14.  
  15. $strona = $_POST['url'];
  16. if($_POST['url']!="") {
  17. $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
  18.  
  19.  
  20.  
  21. $rC = curl_init();
  22. curl_setopt($rC, CURLOPT_HEADER, 1);
  23. curl_setopt($rC, CURLOPT_COOKIEFILE, 'cookies.txt');
  24. curl_setopt($rC, CURLOPT_COOKIEJAR, 'cookiesjar.txt');
  25. curl_setopt($rC, CURLOPT_RETURNTRANSFER, 1);
  26. curl_setopt($rC, CURLOPT_VERBOSE, 0);
  27. curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
  28. curl_setopt($rC, CURLOPT_REFERER, 'www.google.pl');
  29. curl_setopt($rC, CURLOPT_URL, "$strona");
  30.  
  31. $wejscie = curl_exec($rC);
  32. curl_setopt($rC, CURLOPT_REFERER, $strona);
  33. $wejscie = curl_exec($rC);
  34.  
  35. curl_close($rC);
  36. preg_match('/<span class="center">(.+?)<\/center>/ism', $wejscie, $wyjscie);
  37.  
  38. echo $wejscie;
  39.  
  40. }
  41.  
  42. ?>
  43. </body>
  44. </html>
botnaizi
Dzięki Berg, teraz śmiga.

Ale mam jeszcze jedno pytanie chciałem przefiltrować wszystkich aktorów, żebym otrzymał wynik od razu. Dodałem takie coś :
  1. preg_match('/<span property="v:starring">(.*)<\/span>/', $wejscie, $aktorzy_wynik);

Ale wyświetla tylko 1 postać z filmu. Kombinowałem z (.*) dawałem + lub ? ale i tak nie działa ( chyba dlatego że zatrzymuje się na pierwszym spotkanym wyrażeniu ale nie wiem smile.gif ). Co mam tam wpisać, aby wyszukało wszystkie ?

Pozdrawiam
sebekzosw
preg_match_all()questionmark.gif
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.