Şimdi Ara

PHP için Çerezleri Etkinleştirmek

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
687
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar, Vikipedi'de kullanmak amaçlı web tabanlı bir bot ile uğraşıyorum. Login yapmak için gerekli kodları (curl) yazdım, ama giriş yaparken tam olarak şöyle "Oturum açma hatası. Vikipedi'de oturum açabilmek için çerezlerinizin açık olması gerekiyor. Sizin çerezleriniz kapalı. Lütfen açınız ve bir daha deneyiniz" bir mesaj çıkıyor. Kodlar aracılığıyla mı çerezleri etkinleştireceğim, çünkü tarayıcı ayarlarında zaten etkin. Anlayan ve yardımcı olan arkadaşlara şimdiden teşekkür ediyorum.



  • kendinciz kullanıcısına yanıt
    Login olurken kullandığın kodlara CURLOPT_COOKIEJAR ve CURLOPT_COOKIEFILE eklemen lazım.

    Örnek :
     
    $tmp ='cookie saklanacak dosya adresi';
    curl_setopt($ch,CURLOPT_COOKIEJAR,$tmp);
    curl_setopt($ch,CURLOPT_COOKIEFILE,$tmp);
  • @mertcane İlgin için teşekkür ederim ama hiç bir farklılık olmadı sayfada, yine aynı şekilde "çerezleri açınız" diyor. İstersen özelden kodları atıyım sen ayarlayıp geri yolla, sonra buraya yazarız.
  • Kullandığım kodlar bunlar. Belki acemice olabilir zaten yeni başladım PHP'ye, ama Vikipedi hesabın varsa gerekli yerlere kullanıcı adınla şifreni yazarak deneyebilirsin. Çerezleri açınız diyecektir, halledersen çok iyi olur. Kolay gelsin...

    <?php 
    //fonksiyon
    function curl($url, $post=false)
    {
    $ch = curl_init();

    curl_setopt( $ch , CURLOPT_HEADER , 1 );
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, $post ? true : false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post ? $post : false);
    curl_setopt ($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    $icerik = curl_exec($ch);
    return $icerik;
    curl_close($ch);
    }

    //siteden token kodunu çektiğim kısım
    $ch=curl_init();

    curl_setopt( $ch , CURLOPT_HEADER , 1 );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_URL,"https://tr.wikipedia.org/w/index.php?title=%C3%96zel:Kullan%C4%B1c%C4%B1OturumuA%C3%A7ma&returnto=Ana+Sayfa&error=&fromhttp=1");
    $veri1 = curl_exec($ch); // formun kaynak kodunu aldım
    preg_match_all('@<input type="hidden" name="wpLoginToken" value="(.*?)" />@si', $veri1, $guvenlik);

    curl_setopt( $ch , CURLOPT_FOLLOWLOCATION , 1 );
    curl_setopt ($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch,CURLOPT_REFERER,'http://tr.wikipedia.org/wiki/Ana_Sayfa');
    curl_close($ch);

    //siteye formu gönderdiğim kısım
    echo curl("https://tr.wikipedia.org/w/index.php?title=Özel:KullanıcıOturumuAçma&action=submitlogin&type=login", "wpName=kullanıcıadı&wpPassword=sifre&wpRemember=1&wpLoginAttempt=Oturum aç&wpLoginToken=$guvenlik[1][0]&wpForceHttps=1");


    ?>




  • kendinciz kullanıcısına yanıt
    <!--ok-->

     
    function baglan($adres,$KullaniciBilgileri = false){

    $tmp = dirname(__FILE__).'/cookie.txt';
    $ch = curl_init();
    curl_setopt($ch , CURLOPT_URL, $adres);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch , CURLOPT_POST , $KullaniciBilgileri ? true : false);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$KullaniciBilgileri ? $KullaniciBilgileri : false);
    curl_setopt($ch , CURLOPT_COOKIEFILE, $tmp);
    curl_setopt($ch , CURLOPT_COOKIEJAR, $tmp);
    $data=curl_exec($ch);
    curl_close($ch);
    return $data;
    }


    $site = 'https://tr.wikipedia.org/w/index.php?title=Özel:KullanıcıOturumuAçma';

    $baglan = baglan($site);
    preg_match('@<input type="hidden" name="wpLoginToken" value="(.*?)" />@si', $baglan, $token);
    $kulBilgi = 'wpName=Test&wpPassword=Test&wpRemember=1&wpLoginAttempt=Oturum aç&wpLoginToken='.$token[1].'&wpForceHttps=1';
    $login = baglan($site.'&action=submitlogin&type=login',$kulBilgi);
    echo $login;


    şeklinde yapabilirsin ama captcha sıkıntı çıkarabilir.

    Onun yerine API kullanırsan daha rahat halledersin.
    API örnek ;
     
    function baglan($adres,$KullaniciBilgileri = false){

    $tmp = dirname(__FILE__).'/cookie.txt';
    $ch = curl_init();
    curl_setopt($ch , CURLOPT_URL, $adres);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch , CURLOPT_POST , $KullaniciBilgileri ? true : false);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$KullaniciBilgileri ? $KullaniciBilgileri : false);
    curl_setopt($ch , CURLOPT_COOKIEFILE, $tmp);
    curl_setopt($ch , CURLOPT_COOKIEJAR, $tmp);
    $data=curl_exec($ch);
    curl_close($ch);
    return $data;
    }


    $site = 'https://tr.wikipedia.org/w/api.php';
    $uname = 'Mertcane';
    $upass = 'sifre';
    $baglan = baglan($site,'action=login&lgname='.$uname.'&lgpassword='.$upass.'&format=json');
    preg_match('@"token":"(.*?)","cookieprefix":"(.*?)","sessionid":"(.*?)"@',$baglan,$token);
    /*
    $token[1] => token
    $token[2] => cookieprefix
    $token[3] => sessionid
    */
    $login = $baglan = baglan($site,'action=login&lgname='.$uname.'&lgpassword='.$upass.'&lgtoken='.$token[1].'&format=json');
    echo $baglan;



    < Bu mesaj bu kişi tarafından değiştirildi mertcane -- 23 Ağustos 2014; 0:04:13 >




  • @mertcane Bu seferde bu hatayı veriyor:
    quote:

    Oturum açma hatası.
    Giriş oturumunuzla ilgili bir sorun var gibi görünüyor; bu eylem, oturum gaspına karşı önlem olarak iptal edildi. Lütfen "geri" gidin ve geldiğiniz sayfayı yeniden yükleyin, sonra tekrar deneyin.
  • kendinciz kullanıcısına yanıt
    token almadan post atmışım ve token yanlış uyarısı vermiş
     
    <?php

    function baglan($adres,$KullaniciBilgileri = false){

    $tmp = dirname(__FILE__).'/cookie.txt';
    $ch = curl_init();
    curl_setopt($ch , CURLOPT_URL, $adres);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch , CURLOPT_POST , $KullaniciBilgileri ? true : false);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$KullaniciBilgileri ? $KullaniciBilgileri : false);
    curl_setopt($ch , CURLOPT_COOKIEFILE, $tmp);
    curl_setopt($ch , CURLOPT_COOKIEJAR, $tmp);
    $data=curl_exec($ch);
    curl_close($ch);
    return $data;
    }

    $site = 'https://tr.wikipedia.org/w/index.php?title=Özel:KullanıcıOturumuAçma';

    $baglan = baglan($site);
    preg_match('@<input type="hidden" name="wpLoginToken" value="(.*?)" />@si', $baglan, $token);
    $kulBilgi = 'wpName=Mertcane&wpPassword=Test&wpRemember=1&wpLoginAttempt=Oturum aç&wpLoginToken='.$token[1].'&wpForceHttps=1';
    $login = baglan($site.'&action=submitlogin&type=login',$kulBilgi);


    çalışması lazım




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • @mertcane Sayfa boş gözüküyor. Onu nasıl düzelticez?
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.