Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi
L_Devil
post 20.10.2006, 18:47:07
Post #2





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

Posty w temacie


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: 14.08.2025 - 19:21