Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobranie strony internetowej z poziomu php, jak to ugryźć :)
L_Devil
post 20.10.2006, 17:42:23
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam!

Chciałbym napisać prosty system katalogów stron internetowych. User podawałby adres swojej strony, a mój skrypt odwiedzałby go, spisywał META, itp. O ile potafię rozbić stronę ukrytą w zmiennej na konkretne znaczniki, odczytać meta i a href'y, o tyle problemem jest dostanie tej strony.

Moje pytanie brzmi: Jak otworzyć stronę internetową przez php i dostać jej zawartość do zmiennej? Słyszałem, że może do tego posłużyć fsockopen...

Z góry dzięki za wszelką pomoc winksmiley.jpg


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
gszesiek
post 20.10.2006, 17:44:59
Post #2





Grupa: Zarejestrowani
Postów: 152
Pomógł: 1
Dołączył: 17.09.2006

Ostrzeżenie: (0%)
-----


proponowałbym przeszukać choćby te forum - był temat omawiany (niedawno)


--------------------
Go to the top of the page
+Quote Post
ActivePlayer
post 20.10.2006, 17:47:15
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


proponuje tez lekture komentarzy na fsockopen" title="Zobacz w manualu php" target="_manual
Go to the top of the page
+Quote Post
L_Devil
post 20.10.2006, 18:47:07
Post #4





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


użyłem tej funkcji:
  1. <?php
  2. function doPost($uri,$postdata,$host){
  3.  $da = fsockopen($host, 80, $errno, $errstr);
  4.  if (!$da) {
  5.  echo "$errstr ($errno)<br/>n";
  6.  echo $da;
  7.  }
  8.  else {
  9.  $salida ="POST $uri HTTP/1.1rn";
  10.  $salida.="Host: $hostrn";
  11.  $salida.="User-Agent: php Scriptrn";
  12.  $salida.="Content-Type: application/x-www-form-urlencodedrn";
  13.  $salida.="Content-Length: ".strlen($postdata)."rn";
  14.  $salida.="Connection: closernrn";
  15.  $salida.=$postdata;
  16.  fwrite($da, $salida);
  17.  while (!feof($da))
  18.  $response.=fgets($da, 128);
  19.  $response=split("rnrn",$response);
  20.  $header=$response[0];
  21.  $responsecontent=$response[1];
  22.  if(!(strpos($header,"Transfer-Encoding: chunked")===false)){
  23.  $aux=split("rn",$responsecontent);
  24.  for($i=0;$i<count($aux);$i++)
  25.  if($i==|| ($i%2==0))
  26.  $aux[$i]="";
  27.  $responsecontent=implode("",$aux);
  28.  }//if
  29.  return chop($responsecontent);
  30.  }//else
  31.  }//function-doPost
  32. ?>


W taki sposób:

  1. <?php
  2. if($temp_database)
  3. {
  4. $temp_database['url'] = "http://localhost/moja_strona/plik.php"; // to dostaję z bazy danych
  5. $temp = substr($temp_database['url'], 7);
  6. $temp_arr = explode("/", $temp);
  7. $host = $temp_arr[0];
  8. $temp_arr[0] = "";
  9. $postdata = "";
  10. $temp = implode("/", $temp_arr);
  11. echo doPost($temp, "", $host);
  12. }
  13. ?>


I dostałem na dzień dobry stronę z Internal Server Error... po czym jeszcze powtórzoną kilkadziesiąt razy poprawną stronę odbiorcy... co robię nie tak?

Ten post edytował L_Devil 20.10.2006, 18:48:13


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
eai
post 20.10.2006, 22:04:06
Post #5





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. $source = file('http://www.strona.pl/');
  4. $source = implode('', $source);
  5.  
  6. preg_match('/<title>(.*?)</title>/si', $source , $title);
  7. preg_match('/name="description" *content="(.*?)"/si', $source , $description);
  8. preg_match('/name="keywords" *content="(.*?)"/si', $source , $keywords);
  9.  
  10. echo 'Tytul strony: ' . $title[1] . ' <br />';
  11. echo 'Opis strony: ' . $description[1] . ' <br />';
  12. echo 'Slowa kluczowe: ' . $keywords[1] . ' <br />';
  13.  
  14. ?>


Warto tez pobrac jakie kodowanie jest na stronie, i przekonwertowac do kodowania ktorego uzywasz.
Go to the top of the page
+Quote Post
L_Devil
post 21.10.2006, 16:36:25
Post #6





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Testuję to na własnym Apachu... wywołuję to tylko raz - po czym w logach apacha znajduję:
Kod
localhost - - [21/Oct/2006:17:33:34 +0200] "GET /testpage/test_page HTTP/1.0" 200 537
localhost - - [21/Oct/2006:17:33:33 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:33 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:32 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:32 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:33 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:31 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:31 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:29 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:32 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:31 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:27 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:31 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:26 +0200] "GET /testpage/index.php HTTP/1.1" 200 8341
localhost - - [21/Oct/2006:17:33:29 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:27 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:27 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:30 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:30 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:30 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:28 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:32 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:29 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:29 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:27 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:28 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:30 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:28 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
localhost - - [21/Oct/2006:17:33:28 +0200] "GET /testpage/test_page HTTP/1.0" 200 20
O co tu chodzi?

(Po uruchomieniu strony, mięli strasznie długo, komputer zaczyna ostro pracować, itp.)

Ten post edytował L_Devil 21.10.2006, 16:37:07


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
lenczewski
post 21.10.2006, 16:56:15
Post #7





Grupa: Zarejestrowani
Postów: 159
Pomógł: 1
Dołączył: 31.08.2005

Ostrzeżenie: (0%)
-----


http://my.opera.com/lenczewski/blog/show.dml/156176


--------------------
Go to the top of the page
+Quote Post
L_Devil
post 21.10.2006, 17:06:15
Post #8





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


file_get_contents() dał ten sam efekt... strona została pobrana kilkadziesiąt razy, zamiast raz. Na pewno nie wywołuję tego w pętli (sprawdzam echo jedno przed file_get_contents... drukuje na ekran tylko raz). Co jest nie tak?

Apache 2.0.52
php 5.0.4


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
D4rky
post 21.10.2006, 20:08:06
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 10.03.2005

Ostrzeżenie: (0%)
-----


daj jakiś większy kawałek kodu, który teraz używasz, to się zobaczy o co chodzi
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 19:27