• 17-09-2009, 17:57:58
    #10
    Üyeliği durduruldu
    en basit olarak;

    1. $kaynak = file_get_contents("http://www.sinemalar.com");

    echo "$kaynak";

    çalışmıyor.

    2. file(); çalışmıyor
    3. curl çalışmıyor.

    ne olacak bilmiyorum valla nasıl halledecez?? bu tasarımda veya kodlardaki ufk değişiklik gibi görünmüyo bana. bakalım hayırlısı
  • 17-09-2009, 18:47:17
    #11
    CURL çalışıyor... Sadece örnek kodu veriyorum, cookie.txt dosyasının tam yolunu verin sadece. Gerisini yapın artık, forumda bi dünya bot videosu verildi..

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php");
    curl_setopt($ch, CURLOPT_URL, 'http://www.sinemalar.com/film/52543/The-Young-Nurses/');
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "C:\AppServ\www\cookie.txt");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_exec($ch);
    curl_setopt($ch, CURLOPT_URL, 'http://www.sinemalar.com/film/52543/The-Young-Nurses/');
    echo curl_exec($ch);
    curl_close($ch);
  • 17-09-2009, 19:16:16
    #12
    @Enigmatic
    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "C:\AppServ\www\cookie.txt");
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    bunların görevi ne açıklarmısın ?
  • 17-09-2009, 20:06:37
    #13
    By_System adlı üyeden alıntı: mesajı görüntüle
    @Enigmatic
    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "C:\AppServ\www\cookie.txt");
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    bunların görevi ne açıklarmısın ?

    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php"); //referer olara bu sayfa gösteriliyor küçük bir aldatmaca
    curl_setopt($ch, CURLOPT_COOKIEFILE, "C:\AppServ\www\cookie.txt");// referer session bilgilerini depolayan txt dosyası tam yolu yazıp chmod 777 yapmalısınız
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // tarayıcı bilgileriniz
  • 17-09-2009, 20:20:23
    #14
    Misafir adlı üyeden alıntı: mesajı görüntüle
    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php"); //referer olara bu sayfa gösteriliyor küçük bir aldatmaca
    curl_setopt($ch, CURLOPT_COOKIEFILE, "C:\AppServ\www\cookie.txt");// referer session bilgilerini depolayan txt dosyası tam yolu yazıp chmod 777 yapmalısınız
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // tarayıcı bilgileriniz
    hmm referer olayını tam olarak anlayamadım? belirtilen sayfadan asıl sayfaya gelindiğini mi anlatıyor? yani mesela şuan sinemalar.comun bir sayfasına girince splash.php den yönleniyor ve bir daha çıkmıyor bundada bizim curl sahte browserimiz sanki bir linke tıklamışta o reklam sayfasından istenilen sayfaya gelinmiş bunumu siteye açıklıyormu desem ne dicemi bilemedim yani öyle bişi mi ?
  • 17-09-2009, 22:24:15
    #15
    Aslında sitede refferer kontrolü yok, session id kontrolü var, eğer kişi siteye ilk kez giriyorsa session id ile splash.php dosyasına yönlendiriliyor, gezinme esnasında ise session id doluysa normal sayfalar gösteriliyor, siz tarayıcıyı kapattığınız anda session id siliniyor, yani sıfırlanıyor, tekrar açtığınızda session oturumu yeniden başladığı için yine splash.php dosyasına yönlendiriliyor (sekmeli tarayıcılarda tarayıcıyı komple kapatmak gerekir, ie6 her sayfada farklı session id alır), bizde o kodda;

    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php");
    sanki siteyi ziyaret etmiş gibi gösterip ardından asıl içeriği alacağımız sayfaya yöneliyoruz, burada splash.php olup olmaması önemli değil, yeterki herhangi bir sayfasını ziyaret edip session id alın, sonrada hedef sayfaya gidin.

    Cookie olayı ise; site ayrıca sayfayı ziyaret eden kişiye çerez gönderip onuda kontrol ediyor, yani hem çerez hem session kontrolü, bunu file_get_contents ile yapamadığımız için mecburen CURL ile cookie dosyasını tanımlayıp gelen çerez bilgilerini CURL'un bu dosyaya yazmasını sağlıyoruz, dolayısı ile sitede çerezi kontrol ediyor ve varsa bizi direk içeriğe yönlendiriyor, yoksa splash.php dosyasına...


    HTTP_USER_AGENT karşı tarafa kişinin tarayıcı bilgilerini gönderir, bazen siteler tarayıcı kontrolüde yaparlar, amaç botları engellemek, sinemalar.com tarayıcı kontrolü yapmıyor ama, ben sadece alışkanlıktan o satırı koymuşum, silsenizde olur silmesenizde..

    Bu kodlar ile bot yazmak içinde kısaca bir fonksiyon yazalım daha kullanışlı olsun, yani geri kalan kısımları normal PHP kodları ile çalışmak için...

    function sinema($site){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_REFERER, 'http://www.sinemalar.com.splash.php');
    curl_setopt($ch, CURLOPT_URL, $site);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\AppServ\www\cookie.txt');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_exec($ch);
    curl_setopt($ch, CURLOPT_URL, $site);
    $site = curl_exec($ch);
    curl_close($ch);
    return $site;
    }
    
    $verial = 'http://www.sinemalar.com';
    
    echo sinema($verial);
  • 18-09-2009, 01:18:56
    #16
    php bilgim pek yok ama elimdeki curl lu botumu dediğiniz gibi düzenlmeye çalıştım ama ben başaramadım

    peki şöle bi soru sorsam: bu sorunu ortaya çıkaran şey bu splash.php mi ? yani o sayfa kaldırılsa bu sorun düzelirmi ?
  • 18-09-2009, 03:32:19
    #17
    Anlamayacak ne var hocam, olay o kadar basit ki, fonksiyonu botunuzun bi yerine yapıştırın, file_get_contents olan tüm yerleride sinema diye değiştirin bitti.

    Not: cookie.txt için anadizin adını şu şekilde öğrenebilirsiniz..

    $_SERVER['DOCUMENT_ROOT']
    yada dosyayı çalıştırdığınız dizinin adresi;

    $_SERVER['SCRIPT_FILENAME']
  • 18-09-2009, 11:43:51
    #18
    Enigmatic adlı üyeden alıntı: mesajı görüntüle
    Aslında sitede refferer kontrolü yok, session id kontrolü var, eğer kişi siteye ilk kez giriyorsa session id ile splash.php dosyasına yönlendiriliyor, gezinme esnasında ise session id doluysa normal sayfalar gösteriliyor, siz tarayıcıyı kapattığınız anda session id siliniyor, yani sıfırlanıyor, tekrar açtığınızda session oturumu yeniden başladığı için yine splash.php dosyasına yönlendiriliyor (sekmeli tarayıcılarda tarayıcıyı komple kapatmak gerekir, ie6 her sayfada farklı session id alır), bizde o kodda;
    curl_setopt($ch, CURLOPT_REFERER, "http://www.sinemalar.com/splash.php");
    sanki siteyi ziyaret etmiş gibi gösterip ardından asıl içeriği alacağımız sayfaya yöneliyoruz, burada splash.php olup olmaması önemli değil, yeterki herhangi bir sayfasını ziyaret edip session id alın, sonrada hedef sayfaya gidin.
    Cookie olayı ise; site ayrıca sayfayı ziyaret eden kişiye çerez gönderip onuda kontrol ediyor, yani hem çerez hem session kontrolü, bunu file_get_contents ile yapamadığımız için mecburen CURL ile cookie dosyasını tanımlayıp gelen çerez bilgilerini CURL'un bu dosyaya yazmasını sağlıyoruz, dolayısı ile sitede çerezi kontrol ediyor ve varsa bizi direk içeriğe yönlendiriyor, yoksa splash.php dosyasına...
    HTTP_USER_AGENT karşı tarafa kişinin tarayıcı bilgilerini gönderir, bazen siteler tarayıcı kontrolüde yaparlar, amaç botları engellemek, sinemalar.com tarayıcı kontrolü yapmıyor ama, ben sadece alışkanlıktan o satırı koymuşum, silsenizde olur silmesenizde..
    Bu kodlar ile bot yazmak içinde kısaca bir fonksiyon yazalım daha kullanışlı olsun, yani geri kalan kısımları normal PHP kodları ile çalışmak için...
    function sinema($site){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_REFERER, 'http://www.sinemalar.com.splash.php');
    curl_setopt($ch, CURLOPT_URL, $site);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:\AppServ\www\cookie.txt');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_exec($ch);
    curl_setopt($ch, CURLOPT_URL, $site);
    $site = curl_exec($ch);
    curl_close($ch);
    return $site;
    }
    $verial = 'http://www.sinemalar.com';
    echo sinema($verial);

    Hocam çok sağol yeni bilgilerde aldık teşekkürler.