• 10-02-2020, 01:26:55
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Herkese selam, şu anda bir siteden veri çekmek için bir bot yapıyorum fakat bir türlü yapamadım daha doğrusu inputlara post işlemini doğru dürüst yapabildiğimden emin değilim baya uğraştım fakat soluğu burada aldım daha önce curl post ile uğraşmış bilgisi olan arkadaşlar yardımcı olur ise sevinirim.

    <?php
    
    function Baglan($url){
        $curl=curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        $cikti=curl_exec($curl);
        echo curl_error($curl);
        curl_close($curl);
        return str_replace(array("\n","\t","\r"),null,$cikti);
    }
    
    $bag = Baglan('https://www.kitapyurdu.com/index.php?route=account/login');
    preg_match_all('#<input type="hidden" name="csrf_token" value="(.*?)">#' , $bag , $token);
    $baslik2 = str_replace("\" />", "", $token[1][0]); //Sonda bi kaç karakter vardı çekerken sorunluydu yani ondan dolayı onu temizledim
    
    echo trim($baslik2); //burda token i çektim
    
    
    
    
    
    function Baglan2($url2,$data){
    $curl_baslat=curl_init();
    curl_setopt($curl_baslat,CURLOPT_URL,$url2);
    curl_setopt($curl_baslat, CURLOPT_HEADER, 0);
    $tmpfname = dirname(__FILE__).'/cookie.txt';
    curl_setopt($curl_baslat, CURLOPT_COOKIEJAR, $tmpfname);
    curl_setopt($curl_baslat, CURLOPT_COOKIEFILE, $tmpfname);
    curl_setopt($curl_baslat, CURLOPT_REFERER, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($curl_baslat, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_baslat,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($curl_baslat,CURLOPT_POST,1);
    curl_setopt($curl_baslat,CURLOPT_POSTFIELDS,$data);
    curl_setopt($curl_baslat,CURLOPT_RETURNTRANSFER,1);
    $gelen_deger=curl_exec($curl_baslat);
    curl_close($curl_baslat);
    echo $gelen_deger;
    
    }
    
    
    $baglan = Baglan2("https://www.kitapyurdu.com/index.php?route=account/login",array(
        'csrf_token'=> $baslik2, //burası token kısmı hidden inputtan alındı olmasa siteye giriş yapamaz diye düşünüyorum
        'password'=>'orneksifre', //sitedeki input name i ve sonrasınkai değeri şifre
        'email'=> 'email @ email.com')); //aynı şkilde sitedeki input un name i ve değeri
    
    preg_match_all('#<title>(.*?)</title>#' , $baglan , $deneme);
    
    $url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; //burda hangi urlde olduğunu anlamaya çalışıyorum
    
    echo $url;
    echo "<pre>";
    print_r($deneme);
    echo "<pre>";
    
    ?>
    token kısmında hata yaptığımı düşünüyorum birde giriş yaptıktan sonra hangi urlde olacağını

    yardımcı olursanız çok sevinirim eğer ücretli şekilde yardımcı olmayı düşününen arkadaşlar var ise onlarlada konuşabilirim.şimdiden saolun
  • 10-02-2020, 02:37:24
    #2
    selamlar,
    şu işine yarar

    1. bununla login ol ve çerezleri txt ye kaydet

    <?php
    
    $url = "https://www.kitapyurdu.com/index.php?route=account/login";
    
    $params = array(
    "email" => 'onudasdasdasr@hotmail.com',
    "password" => '1231231212312',
    );
    
    $token_cookie= realpath("test.txt");
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $token_cookie);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $token_cookie);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    
    if (curl_errno($ch)) die(curl_error($ch));
    libxml_use_internal_errors(true);
    $dom = new DomDocument();
    $dom->loadHTML($response);
    libxml_use_internal_errors(false);
    $tokens = $dom->getElementsByTagName("input");
    for ($i = 0; $i < $tokens->length; $i++)
    {
    $meta = $tokens->item($i);
    if($meta->getAttribute('name') == 'csrf_token')
    $t = $meta->getAttribute('value');
    }
    
    $postinfo = "";
    foreach($params as $param_key => $param_value)
    {
    $postinfo .= $param_key ."=". $param_value . "&";
    }
    $postinfo .= "csrf_token=". $t;
    
    $headers = array();
    $headers[] = "X-CSRF-Token: $t";
    $headers[] = "Cookie: $token_cookie";
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 260);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    
    ob_start();
    $html = curl_exec($ch);
    $result = curl_getinfo($ch);
    ob_get_clean();
    
    echo "<pre>";
    print_r($result);
    echo "</pre>";
    print($html);
    
    if (curl_errno($ch)) print curl_error($ch);
    curl_close($ch);

    2.çerezler oluştuktan sonra girmek istediğin sayfaya url yazıp girebilirsin
    <?php
    
    
    
    $ch = curl_init ('https://www.kitapyurdu.com/index.php?route=account/account');
    curl_setopt ($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    
    curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 260);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    
    $output = curl_exec ($ch);
    
    print_r($output);
  • 10-02-2020, 02:56:21
    #3
    @OnurTasci; çok saolun üstad hemen deniyorum



    @OnurTasci; usta kodu test ettinizmi ben şu anda deniyorum ununexpected hatası alıyorum nerden kaynaklandığını anlıyamadım wp üzerinden yazdım size bu arada