• 13-03-2016, 17:42:14
    #1
    Arkadaşlar merhaba,

    cURL ile veri post ediyorum ama bir türlü beceremedim.

    <?php
    
    $_cookie = '/cookies/username.alios'; //önceden login olup çektiğim cookie dosyası
    $ch = curl_init();
    $url = "https://mobile.twitter.com/api/retweet";
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "id=708666435489427456&m5_csrf_tkn=8a838ea37531639e9548fe38eb85a98b");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $_cookie);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $_cookie);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    	'Accept: application/json',
        'Accept-Language: tr-tr',
        'Connection: keep-alive',
    	'Accept-Encoding: gzip, deflate',
    	'Content-Type: application/x-www-form-urlencoded',
    	'Origin: https://mobile.twitter.com',
    	'Referer: https://mobile.twitter.com/ByCemAdrian/status/708666435489427456',
    	'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1')
    );
    $output = curl_exec($ch);
    
    curl_close($ch);
    
    var_dump($output);
    
    /**
    * Çıktısı:
    * string(84) "‹ ÈK €0 À»d-;·ÑúÀ@?’¼Ò…xwå<Ü9C²8NsÊ&ÓëyGVmã°ŠÄe$<•Ñ4a£kÇ’÷t6D"
    */
    
    ?>
    http://codepad.org/NVQHE8g6

    Bana geri dönen hatanın çıktısını göremiyorum yani nerede hata yaptığımı da bulamıyorum. Ben bu veriyi nasıl post edebilirim. Türlü türlü yöntemler denedim yabancı kaynaklarda gördüğüm. Elimdeki cookie dosyası(kendim ürettiğim) düzgün çalışıyor.

    Charles ile dinliyorum zaten trafiği.



    Buradaki verileri başka bir hesaptaki oluşturduğum cookie dosyasına göre düzenleyip post ettiğim zaman sıkıntı yok. İşlemi gerçekleştiriyor. Hatta https://www.hurl.it/ üzerinden yaptığım zaman da sıkıntı yok.



    Bu şekilde çalıştır dediğimde sıkıntısız olarak işlemi gerçekleştiriyor. Ben nerede hata yapıyorum. Aynısını PHP'de cURL ile yapıyorum olmuyor. Benim problemim nerede?

    Yardımcı olan arkadaşlara şimdiden teşekkürler
  • 13-03-2016, 20:12:10
    #2
    Sorun https olabilir, aşağıdaki kodu ekleyip dene.
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  • 13-03-2016, 20:36:02
    #3
    xBrainTR adlı üyeden alıntı: mesajı görüntüle
    Sorun https olabilir, aşağıdaki kodu ekleyip dene.
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    Hocam teşekkür ederim cevabın için ama maalesef bu da çözmedi sorunumu
  • 13-03-2016, 20:55:59
    #4
    aliosmanyuksel adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkür ederim cevabın için ama maalesef bu da çözmedi sorunumu
    Toprağım header kontrolü yapıp ne dönüyor onu incelemen lazım, sadece varsayımla çözemezsin bu problemi

    + olarak

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    Bu şart ssl bağlantısı yapıyorsan sıfırlama yapman lazım.
  • 13-03-2016, 21:08:53
    #5
    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    Toprağım header kontrolü yapıp ne dönüyor onu incelemen lazım, sadece varsayımla çözemezsin bu problemi

    + olarak

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    Bu şart ssl bağlantısı yapıyorsan sıfırlama yapman lazım.
    Bu dediğinizi yapmıştım ama tekrar bir deneyeyim hocam. Şuan Ankara'daki patlamadan dolayı Twitter engellendi. VPN aktif ettiğim zaman da doğal olarak Charles dinleyemiyor telefonun trafiğini. Elimde şu vardı en son kayıt aldığım;



    Geri dönen header bu şekilde. Ben 403 almaya, 'Forbidden (Rate Limit Exceeded)' yazısını görmeye de razıyım
  • 13-03-2016, 21:37:45
    #6
    aliosmanyuksel adlı üyeden alıntı: mesajı görüntüle
    Bu dediğinizi yapmıştım ama tekrar bir deneyeyim hocam. Şuan Ankara'daki patlamadan dolayı Twitter engellendi. VPN aktif ettiğim zaman da doğal olarak Charles dinleyemiyor telefonun trafiğini. Elimde şu vardı en son kayıt aldığım;



    Geri dönen header bu şekilde. Ben 403 almaya, 'Forbidden (Rate Limit Exceeded)' yazısını görmeye de razıyım
    Zaten 403 almışsın muhtemelen gönderdiğin parametreler hatalı benim gözüme çarpanlar ;

    * Useragent'i header ile değil direk curl ile gönder.
    curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)'); gib..

    * Sıkıştırılmış veri ise
    curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
    Kullanman lazım.

    * Bi location ref problemi varsa ;
    curl_setopt($curl, CURLOPT_AUTOREFERER, true);

    Bunları dene 403ü geçerse senindir geçmezse hiç senin olmamıştır
  • 13-03-2016, 22:22:16
    #7
    Big_Turk adlı üyeden alıntı: mesajı görüntüle
    Zaten 403 almışsın muhtemelen gönderdiğin parametreler hatalı benim gözüme çarpanlar ;

    * Useragent'i header ile değil direk curl ile gönder.
    curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)'); gib..

    * Sıkıştırılmış veri ise
    curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
    Kullanman lazım.

    * Bi location ref problemi varsa ;
    curl_setopt($curl, CURLOPT_AUTOREFERER, true);

    Bunları dene 403ü geçerse senindir geçmezse hiç senin olmamıştır
    Hocam Allah razı olsun ne diyim valla beni büyük dertten kurtardınız

    Form verilerini urlencode($string ) şeklinde işlemden geçirmem lazımmış ek olarak. Bu önerilerinizi hepsini bulduğum kodlara uygulayarak, deneme yanılma yoluyla çözdüm. ^^

    $id = '708666435489427456';
    $token = '9bf0ac6e6795d8e0476b9ab6b22ed6b0';
    $url = 'https://mobile.site.com/api';
    $fields = array(
    	'id' => urlencode($id),
    	'csrf_tkn' => urlencode($token)
    );
    
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string, '&');
    
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $_cookie);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $_cookie);
    curl_setopt($ch, CURLOPT_POST, count($fields));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1');
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
    curl_setopt($ch, CURLOPT_REFERER, 'https://mobile.site.com/ByCemAdrian/status/708666435489427456');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    	'Accept: application/json',
        'Accept-Language: tr-tr',
        'Connection: keep-alive',
    	'Content-Type: application/x-www-form-urlencoded',
    	'Origin: https://mobile.site.com')
    );
    
    $result = curl_exec($ch);
    curl_close($ch);
    Daha sonra Google aramalarından bu siteye gelen olursa diye benim işimi gören kodu buraya bırakayım. Bi teşekkürünüz yeter