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!
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;
}
}
Ü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;