Arama butonu
Bu konudaki kullanıcılar: 1 misafir
7
Cevap
701
Tıklama
0
Öne Çıkarma
PHP için Çerezleri Etkinleştirmek
K
11 yıl
Er
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



M
11 yıl
Çavuş

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);




Bu mesajda bahsedilenler: @kendinciz
K
11 yıl
Er
Konu Sahibi

@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.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @mertcane
K
11 yıl
Er
Konu Sahibi

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");


?>


Bu mesaja 1 cevap geldi.
M
11 yıl
Çavuş

<!--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 >


Bu mesajda bahsedilenler: @kendinciz
K
11 yıl
Er
Konu Sahibi

@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.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @mertcane
M
11 yıl
Çavuş

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




Bu mesajda bahsedilenler: @kendinciz
K
11 yıl
Er
Konu Sahibi

@mertcane Sayfa boş gözüküyor. Onu nasıl düzelticez?




Bu mesajda bahsedilenler: @mertcane
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.