cURL ile Captcha Çekme
7
●3.171
- 19-09-2014, 13:43:41http://de-captcher.com/ bu siteden kredi alıp api yardımıyla otomatik kırdırabilirsin.borealis adlı üyeden alıntı: mesajı görüntüle
- 19-09-2014, 13:53:28sizin yapmak istediğiniz özel mesaj attığınızda deiğim gibi php ile mümkün değil yani en azından session ve cookieleri tutman gerek
tek seferde olsa cookie vs ile üstdeki arkadaşın dediği gibi apiler ile yapılabilir.
ama siz önce php çalışacak önünüze cahta gelcek değeri yazıp tekrar phpyi çalıştırmak istiyorsunuz mümkün olacağını zannetmiyorum
- 19-09-2014, 13:56:07güvenlik kodunu manual mi girmek istiyor. O şekildede girebilirsin ama boşa zaman kaybı.CodeS adlı üyeden alıntı: mesajı görüntüle
- 19-09-2014, 13:59:15aynen manuel oalrak 2 adımda çalışsın istiyo yani önce caphta gelsin gireyim sonra sayfaya cahta sonucuu göndereyim diyorda mümkün olması için cookieleri kalıcı olarak tutması gerekmoonly adlı üyeden alıntı: mesajı görüntüle
- 19-09-2014, 14:09:17Üyeliği durdurulducurl session olayı var. Session açılıyor ve güvenlik kodu isteniyor hafızada tutuluyor ve daha sonra curl ile post yaparken bu session datası ile yapılıyor.
- 19-09-2014, 14:41:23moonly adlı üyeden alıntı: mesajı görüntüleCodeS adlı üyeden alıntı: mesajı görüntülemoonly adlı üyeden alıntı: mesajı görüntüleCodeS adlı üyeden alıntı: mesajı görüntüleÇerezleri txt dosyasında tutuyorum, 10 adet girilecek veri var. 9 tanesi otomatik oluşturuyorum. Sonuncu captcha. Captcha kodunu el ile girmek istiyorum, böylece sadece captcha girerek işlemleri yapacam. API kullanmak istemiyorum. Sadece nasıl yapabilirim onu merak ediyorum. Çerezlerden veya sessionlardan kodu çekemeyeceğime göre captchayı ekrana nasıl bastırabilirim? Verileri post ederken formun bulunduğu sayfadan hidden değerler var onları alıyorum ve verileri toplayıp oluşturma sayfasına gönderiyorum. Captchayı bu aşamada nasıl çekebilirim?tolgatasci adlı üyeden alıntı: mesajı görüntüle
Teşekkür ederim tüm cevaplar için, +r10 verdim
- 21-09-2014, 17:54:09Kimlik doğrulama veya yönetimden onay bekliyor.Yabancı kaynaklarda bulamazsın hocam böyle değerli bilgileri

Daha önce uzun uğraşlar sonucu böyle birşey yapmıştım.
Aşağıdaki gibi yaparsan problemsiz çekebilirsin.
Aşağıdaki fonksiyonu kullanarak kaptcha kodunu rahatlıkla alabilirsin ancak
dikkat etmen gereken bir nokta var.
Fonksiyon içerisinde belirtilen çerez adı PHPSESSID 'dir. senin çekeceğin sitedeki geçen isim neyse onunla değiştirmelisin.
function update_captcha($url,$PHPSESSiD){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)'); curl_setopt($ch, CURLOPT_COOKIE, "PHPSESSID=$PHPSESSiD;"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); $raw_img_data = curl_exec($ch); curl_close ($ch); $data = base64_encode($raw_img_data);//convert raw image data to base64 format $cookie_life=time()+10; // cookie stored captcha image life setcookie("RAW_IMG_DATA", $data, $cookie_life );//set captcha image raw data to visitor browser cookie return "Kodu girin:<input id='captcha' type='text' name='captcha' title='Captcha'><img id='captcha_img' alt='Captcha code' src='./image.php?" . time() . "'>"; }Yukarıdaki fonksiyonda curl ile sunucudan gelen cevapta resme ait raw data base64 olarak kodlanıp cookie içerisine alınmaktadır(cookie ömrü 10sn).
fonksiyon bitiminde return ile image.php dosyasına o anki resme ait olan raw data aktarılıp header ile resim oluşturulmaktadır ve bu resim aşağıdaki komutu kullanacağın yerde echo ile gösterilmektedir.
Kullanımı şu şekilde;
//örnek url: intmail.183.com.cn/kaptcha.jpg echo update_captcha($url='www.intmail.183.com.cn/kaptcha.jpg',$PHPSESSiD='')
image.php dosyasının içeriği ise şöyledir;
<?php if(isset($_COOKIE['RAW_IMG_DATA'])){ header("Cache-Control: must-revalidate"); header('Content-Type: image/jpeg;'); //header("Expires: Sat, 26 Jul 2013 05:00:00 GMT"); // Date in the past $picture=$_COOKIE['RAW_IMG_DATA']; $picture = base64_decode($picture); //readfile($picture); echo $picture; //$picture = imagecreatefromstring($picture); //imagejpeg($picture); //imagedestroy($picture); }else{echo 'Raw Data çerezi bulunamadı 10 sn doldu veya browser çerezleri açık değil, captcha\'yı yenilemeyi dene!';} ?>