• 12-09-2010, 15:09:49
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar,
    Bot denemesi yapıyorum ancak botun veri çektiği site header location ile başka yere yönlendiği için bot veriyi çekemiyor. Bu sorunu nasıl aşabilirim?

    preg_match($uyenom,$store,$uyenu);

    ile çekiyorum.

    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); işe yaramıyor çünkü safe mode problemi var
  • 12-09-2010, 15:15:32
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Kötü günün dostu file_get_content işe yaramıyor mu?
  • 12-09-2010, 15:15:52
    #3
    Üyeliği durduruldu
    by_grafitus adlı üyeden alıntı: mesajı görüntüle
    Kötü günün dostu file_get_content işe yaramıyor mu?
    Cookie
  • 12-09-2010, 16:32:31
    #4
    function get_redirect_url($url){
    		$redirect_url = null; 
    	 
    		$url_parts = @parse_url($url);
    		if (!$url_parts) return false;
    		if (!isset($url_parts['host'])) return false; //can't process relative URLs
    		if (!isset($url_parts['path'])) $url_parts['path'] = '/';
    	 
    		$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
    		if (!$sock) return false;
    	 
    		$request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n"; 
    		$request .= 'Host: ' . $url_parts['host'] . "\r\n"; 
    		$request .= "Connection: Close\r\n\r\n"; 
    		fwrite($sock, $request);
    		$response = '';
    		while(!feof($sock)) $response .= fread($sock, 8192);
    		fclose($sock);
    	 
    		if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
    			if ( substr($matches[1], 0, 1) == "/" )
    				return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);
    			else
    				return trim($matches[1]);
    	 
    		} else {
    			return false;
    		}
    	 
    	}
    Ben bu fonksiyonu kullanıyorum. php.net den bulmuştum galiba.

    $yeni_url = get_redirect_url($url);

    şeklinde kullanabilirsin.
  • 13-09-2010, 00:47:46
    #5
    Üyeliği durduruldu
    Teşekkürler, işime yaradı
    _LosT_ adlı üyeden alıntı: mesajı görüntüle
    function get_redirect_url($url){
            $redirect_url = null; 
         
            $url_parts = @parse_url($url);
            if (!$url_parts) return false;
            if (!isset($url_parts['host'])) return false; //can't process relative URLs
            if (!isset($url_parts['path'])) $url_parts['path'] = '/';
         
            $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
            if (!$sock) return false;
         
            $request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n"; 
            $request .= 'Host: ' . $url_parts['host'] . "\r\n"; 
            $request .= "Connection: Close\r\n\r\n"; 
            fwrite($sock, $request);
            $response = '';
            while(!feof($sock)) $response .= fread($sock, 8192);
            fclose($sock);
         
            if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
                if ( substr($matches[1], 0, 1) == "/" )
                    return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);
                else
                    return trim($matches[1]);
         
            } else {
                return false;
            }
         
        }
    Ben bu fonksiyonu kullanıyorum. php.net den bulmuştum galiba.

    $yeni_url = get_redirect_url($url);

    şeklinde kullanabilirsin.