GET запрос в PHP с разных IP адресов

ИТАК на PHP мне известны 2 метода запроса с разных айпишников:

Первый с использованием библиотеки curl — нужно заюзать опцию CURLOPT_INTERFACE
Второй на сокетах — для привязки айпишника нужно использовать socket_bind

вот рабочий код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
$url = "http://mysite.org.ua/test.php";
echo "<h1>CURLOPT_INTERFACE</h1>";
 
	$get = curl_init();
	curl_setopt($get, CURLOPT_URL, $url); 
curl_setopt($get, CURLOPT_INTERFACE,'192.168.2.1');
curl_setopt($get, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($get, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($get, CURLOPT_TIMEOUT, 60);
 
$buf = curl_exec($get);
echo $buf;
 
echo "
<h1>socket_bind</h1>
";
 
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Unable to create socket\n");
 
socket_bind($sock, '192.168.1.1');
socket_connect($sock, 'mysite.org.ua', 80);
 
$request  = "GET /seo/ip.php HTTP/1.1\r\n";
$request .= "Host: gtalex.ru\r\n";
$request .= "Connection: Close\r\n\r\n";
 
socket_write($sock, $request);
 
$buff= "";
do {
$recv = "";
$recv = socket_read($sock, '1400');
if($recv != "") {
$buff .= $recv;
}
} while($recv != "");
 
socket_close($sock);
 
echo $buff;
?>

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Загрузка...
Menu Title