Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Использование альтернативного IP при обращении к url или whois через сокет на PHP
Tckb ваш зхостер предоставляет несколько IP адресов от имени которых вы можете вызывать другие сайты или IP адреса это реашет проблему блокировки от кол-ва обращений. Это является надежной альтернативой использования прокси серверов для многих задач, таких как парсинг, whois запросы или проверка почтовых адресов.
Классическое использование fsockopen для получения whois через обращение на 43 порт не позволяет использовать второй IP выделенный на вашем хостинге. Для этого используйте базовый функционал сокетов, который это позволит сделать.
Данный пример демонстрирует следующие аспекты программирования на PHP: работа с сокетами, .
// Пример получения whois-данных домена
$url='whois.iana.org';
$out='ru';
$rn=($url=='whois.nic.org.mt'?"\n":"\r\n");
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
socket_bind($sock, '195.12.12.12');
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, ['sec' => 10, 'usec' => 0]);
$str=@socket_connect($sock, $url, 43);
$errno = socket_last_error($sock);
if ($str === false || $errno != 0) {
echo "\n\n" . date("d-m-Y H:i:s") . ' Socket error ' . $url . ' через 195.12.12.12 для ' . $out . ': ' . "\n errno=" . $errno . "\n";
socket_close($sock);
return false;
}
socket_write($sock, $out . $rn, strlen($out . $rn));
$str = '';
while (($input=socket_read($sock, 1024))) $str .=$input;
socket_close($sock);
}
echo $str;
// Пример отправки http запроса и получения ответа от сайта
$opts = [
'socket' => [
'bindto' => '195.12.12.12:0',
],
];
$context = stream_context_create($opts);
//$contents = fopen('http://www.example.com', 'r', false, $context);
$fp = stream_socket_client("tcp://htmlweb.ru:80", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "GET /load/is.php HTTP/1.0\r\nHost: htmlweb.ru\r\nAccept: */*\r\nConnection: Close\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
echo $str;
.
Прокомментировать/Отблагодарить