cURL ip adresi

6 Cevap php

Ben kullanıcının ip adresini değil sunucu tek bir kıvırmak isteği göndermek gerekir. Ben hayır şans ile bu çalıştı:

curl_setopt( $ch, CURLOPT_INTERFACE, $ip );

Herhangi bir fikir?

Teşekkürler!

6 Cevap

Orada güvenli bir şekilde kıvırmak isteği ip adresini sızdırarak yolu yok, ama ben bir sigara güvenli bir yol bulundu yani Tamam, ben istekte oldu bu isteği alan sunucu komut bağlıdır, ancak API kandırmak benim için çalıştı için:

curl_setopt( $ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "HTTP_X_FORWARDED_FOR: $ip"));

Bu her zaman işe yaramaz, ama bu durumda benim için çalıştı.

Teşekkürler yardım için herkes!

: Bu yüzden ben o zaman sadece bu yapmak zorunda ve sürece IP sunucuya atanır gibi, etrafında bir yol buldu Bu benim için kıvrılma ile çalışmıyor

echo http_socket::download('http://something.com', '55.55.44.33');

final class http_socket
{
    static public function download($url, $bind_ip = false)
    { 
        $components = parse_url($url);
        if(!isset($components['query'])) $components['query'] = false;

        if(!$bind_ip) 
        {
            $bind_ip = $_SERVER['SERVER_ADDR'];
        }

        $header = array();
        $header[] = 'GET ' . $components['path'] . ($components['query'] ?  '?' . $components['query'] : '');
        $header[] = 'Host: ' . $components['host'];
        $header[] = 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7';
        $header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
        $header[] = 'Accept-Language: en-us,en;q=0.5';
        $header[] = 'Accept-Encoding: gzip,deflate';
        $header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
        $header[] = 'Keep-Alive: 300';
        $header[] = 'Connection: keep-alive';
        $header = implode("\n", $header) . "\n\n";
        $packet = $header;

        //----------------------------------------------------------------------
        // Connect to server
        //----------------------------------------------------------------------
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        socket_bind($socket, $bind_ip);
        socket_connect($socket, $components['host'], 80);

        //----------------------------------------------------------------------
        // Send First Packet to Server
        //----------------------------------------------------------------------
        socket_write($socket, $packet);
        //----------------------------------------------------------------------
        // Receive First Packet to Server
        //----------------------------------------------------------------------
        $html = '';
        while(1) {
            socket_recv($socket, $packet, 4096, MSG_WAITALL);
            if(empty($packet)) break;
            $html .= $packet;
        }
        socket_close($socket);

        return $html;
    }
}

Bir IP adresi sızdırma cURL yapabileceği bir şey değildir. Bu ham soket bağlantıları manipülasyon gerektiren bir alt düzey bir operasyon.

Eğer orada sunucunun ip adresini koymak gerekiyordu çünkü budur.

Sen Kıvrılmaları kullanarak sahte bir kaynak adresine sahip bir IP paketi sahte olamaz.

Üst çözümlerin hiçbiri benim için çalıştı. Ancak proxy üzerinden bir istekte çok iyi çalışıyor:

$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888'; //put your proxy here
//$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);

echo $result;

Emin değil bu, ama sormak eğer "arayüz" seçeneği bakmak, aynı sunucudan farklı bir IP adresi kullanmak kıvırmak istiyorsanız. Veya benzer: "0 eth0" gibi bir şey olacak.