• 31-01-2017, 11:07:01
    #1
    Daha önce curl fonksiyonu ile bağlandığım siteye şimdi bağlanamıyorum. Neden olabilir. Karşı site kendini korumaya almış olabilir mi? Böyle birşey mümkün mü?

    function baglan($url){

    $curl=curl_init();

    curl_setopt($curl,CURLOPT_URL,$url);

    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

    //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //301 moved hatası için sonrada eklendi.

    $cikti=curl_exec($curl);

    curl_close($curl);

    return str_replace(array("\n","\t","\r"), null,$cikti);

    }

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 11:07:01 -->-> Daha önceki mesaj 09:20:02 --

    Bilgisi olan kimse yokmu?
  • 31-01-2017, 11:48:13
    #2
    Bunun bir çok sebebi olabilir, önemli 3 maddeyi sizinle paylaşacağım.

    1. useragent kullanmıyorsunuz!
    2. Proxy kullanmıyorsunuz!
    3. Kullanıcının gönderdiği session, cookie verilerini göndermiyorsunuz.
    ...
  • 31-01-2017, 11:59:12
    #3
    ramul77 adlı üyeden alıntı: mesajı görüntüle
    Daha önce curl fonksiyonu ile bağlandığım siteye şimdi bağlanamıyorum. Neden olabilir. Karşı site kendini korumaya almış olabilir mi? Böyle birşey mümkün mü?

    function baglan($url){

    $curl=curl_init();

    curl_setopt($curl,CURLOPT_URL,$url);

    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

    //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //301 moved hatası için sonrada eklendi.

    $cikti=curl_exec($curl);

    curl_close($curl);

    return str_replace(array("\n","\t","\r"), null,$cikti);

    }

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 11:07:01 -->-> Daha önceki mesaj 09:20:02 --

    Bilgisi olan kimse yokmu?
        function curl($url, $post = NULL)
        {
            $http_header = array(
                "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
                "Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4,id;q=0.2,ru;q=0.2,ar;q=0.2,fa;q=0.2",
                "Cache-Control:max-age=0",
                "Upgrade-Insecure-Requests:1",
            );
            $ch = curl_init();
            curl_setopt_array($ch, array(
                CURLOPT_URL            => $url,
                CURLOPT_USERAGENT      => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_FOLLOWLOCATION => TRUE,
                CURLOPT_ENCODING       => "",
                CURLOPT_SSL_VERIFYPEER => FALSE,
                CURLOPT_SSL_VERIFYHOST => FALSE,
                CURLOPT_MAXREDIRS      => 3,
                CURLOPT_HTTPHEADER     => $http_header,
            ));
            if (isset($post)) {
                curl_setopt_array($ch, array(
                    CURLOPT_POST       => TRUE,
                    CURLOPT_POSTFIELDS => $post,
                    CURLOPT_HTTPHEADER => array_merge($http_header, array(
                        "Expect: ",
                    )),
                ));
            }
            $content = curl_exec($ch);
            $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            $http_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
            curl_close($ch);
            return (object)array(
                "http_code" => $http_code,
                "http_url"  => $http_url,
                "content"   => $content,
            );
        }
    bu işinizi görecektir.

    Kullanıcımı
    $que = curl("http://mynet.com/");
    $html = $que->content;
    $response_code = $que->http_code;
    $response_url = $que->http_url;
  • 31-01-2017, 13:26:00
    #4
    KoRayFENER adlı üyeden alıntı: mesajı görüntüle
        function curl($url, $post = NULL)
        {
            $http_header = array(
                "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
                "Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4,id;q=0.2,ru;q=0.2,ar;q=0.2,fa;q=0.2",
                "Cache-Control:max-age=0",
                "Upgrade-Insecure-Requests:1",
            );
            $ch = curl_init();
            curl_setopt_array($ch, array(
                CURLOPT_URL            => $url,
                CURLOPT_USERAGENT      => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_FOLLOWLOCATION => TRUE,
                CURLOPT_ENCODING       => "",
                CURLOPT_SSL_VERIFYPEER => FALSE,
                CURLOPT_SSL_VERIFYHOST => FALSE,
                CURLOPT_MAXREDIRS      => 3,
                CURLOPT_HTTPHEADER     => $http_header,
            ));
            if (isset($post)) {
                curl_setopt_array($ch, array(
                    CURLOPT_POST       => TRUE,
                    CURLOPT_POSTFIELDS => $post,
                    CURLOPT_HTTPHEADER => array_merge($http_header, array(
                        "Expect: ",
                    )),
                ));
            }
            $content = curl_exec($ch);
            $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            $http_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
            curl_close($ch);
            return (object)array(
                "http_code" => $http_code,
                "http_url"  => $http_url,
                "content"   => $content,
            );
        }
    bu işinizi görecektir.

    Kullanıcımı
    $que = curl("http://mynet.com/");
    $html = $que->content;
    $response_code = $que->http_code;
    $response_url = $que->http_url;

    Sabah kendiliğinden düzeldi. Fakat sebei neydi, anlayamadım. Yinede sizin verdiğiniz kodları uygulayayım dedim. Fakat beceremedim. Benim index.php de bağlantıyı aşağıdaki gibi yapıyorum. O verdiğiniz ikin bölümdeki kodları buraya mı gircem.
    $baglan=baglan("http://xxxxx/");	
    preg_match_all('#<li><a href="(.*?)">(.*?) oyun</a></li>#',$baglan,$kategori);
    $kategorilink=$kategori[1];
    $kategoribaslik=$kategori[2];
    $kategoribaglan = baglan($link);
  • 31-01-2017, 13:47:04
    #5
    Platin üye
    ramul77 adlı üyeden alıntı: mesajı görüntüle
    Hocam verdiğiniz kodları tam uygulamayadım. Benim index.php de bağlantıyı aşağıdaki gibi yapıyorum. O verdiğiniz ikin bölümdeki kodları buraya mı gircem
    $baglan=baglan("http://xxxxx/");	
    preg_match_all('#<li><a href="(.*?)">(.*?) oyun</a></li>#',$baglan,$kategori);
    $kategorilink=$kategori[1];
    $kategoribaslik=$kategori[2];
    $kategoribaglan = baglan($link);


    function baglan($url, $post)
    {
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		
    	if($post != "yok"){
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    	}		
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $icerik = curl_exec($ch);
    	if(curl_exec($ch) === false){
    echo 'Curl hatası: ' . curl_error($ch);
    echo curl_errno($ch);
    	}
    curl_close($ch);
    return $icerik;
    		}
    $baglan=baglan("http://xxxxx/"); bölümünü $baglan=baglan("http://xxxxx/","yok"); olarak değiştirip yukarıdaki curl fonk. kullanıp ekranda hata yazarsa hata kodu ile birlikte buraya yazar mısınız?
  • 31-01-2017, 18:16:00
    #6
    azatmetin adlı üyeden alıntı: mesajı görüntüle
    function baglan($url, $post)
    {
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		
    	if($post != "yok"){
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    	}		
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $icerik = curl_exec($ch);
    	if(curl_exec($ch) === false){
    echo 'Curl hatası: ' . curl_error($ch);
    echo curl_errno($ch);
    	}
    curl_close($ch);
    return $icerik;
    		}
    $baglan=baglan("http://xxxxx/"); bölümünü $baglan=baglan("http://xxxxx/","yok"); olarak değiştirip yukarıdaki curl fonk. kullanıp ekranda hata yazarsa hata kodu ile birlikte buraya yazar mısınız?
    Hocam herhangi bir hata vermedi. beyaz sayfa çıkıyor.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 17:06:40 -->-> Daha önceki mesaj 16:05:43 --

    Yine aynı şey oldu. Kendi kendine düzelen program, yine çalışmadı.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 17:11:24 -->-> Daha önceki mesaj 17:06:40 --

    Şimdi hata çıktı ;
    Moved Permanently

    The document has moved here.
    Curl hatası: malformed3

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 18:16:00 -->-> Daha önceki mesaj 17:11:24 --

    KoRayFENER adlı üyeden alıntı: mesajı görüntüle
        function curl($url, $post = NULL)
        {
            $http_header = array(
                "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
                "Accept-Language:tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4,id;q=0.2,ru;q=0.2,ar;q=0.2,fa;q=0.2",
                "Cache-Control:max-age=0",
                "Upgrade-Insecure-Requests:1",
            );
            $ch = curl_init();
            curl_setopt_array($ch, array(
                CURLOPT_URL            => $url,
                CURLOPT_USERAGENT      => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
                CURLOPT_RETURNTRANSFER => TRUE,
                CURLOPT_FOLLOWLOCATION => TRUE,
                CURLOPT_ENCODING       => "",
                CURLOPT_SSL_VERIFYPEER => FALSE,
                CURLOPT_SSL_VERIFYHOST => FALSE,
                CURLOPT_MAXREDIRS      => 3,
                CURLOPT_HTTPHEADER     => $http_header,
            ));
            if (isset($post)) {
                curl_setopt_array($ch, array(
                    CURLOPT_POST       => TRUE,
                    CURLOPT_POSTFIELDS => $post,
                    CURLOPT_HTTPHEADER => array_merge($http_header, array(
                        "Expect: ",
                    )),
                ));
            }
            $content = curl_exec($ch);
            $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            $http_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
            curl_close($ch);
            return (object)array(
                "http_code" => $http_code,
                "http_url"  => $http_url,
                "content"   => $content,
            );
        }
    bu işinizi görecektir.

    Kullanıcımı
    $que = curl("http://mynet.com/");
    $html = $que->content;
    $response_code = $que->http_code;
    $response_url = $que->http_url;

    Hocam şöyle bir hata veriyor.
     stdClass Object ( [http_code] => 200 [http_url] => http://www.eczaneleri.org/ [content] => )