загрузка удаленных данных на сервер в PHP

Я пытаюсь загрузить контент с удаленного URL-адреса в свой php-код. Есть два ограничения:

  1. Мне нужно использовать IP-адрес выделенного сервера, который у меня есть, поэтому REMOTE_ADDR другого сервера должен быть моим выделенным IP-адресом. Это устраняет Curl, потому что Curl использует прокси-сервер для загрузки удаленного URL-адреса, а прокси-сервер изменяет IP-адрес, который не работает.

  2. Мне нужно загрузить данные на моем сервере с помощью PHP. Я не хочу использовать Javascript из соображений безопасности.

Есть ли другие решения, кроме Curl?

Спасибо


person pawelglow    schedule 14.01.2010    source источник
comment
cURL использует прокси? Это что-то уникальное для вашей конфигурации?   -  person Frank Farmer    schedule 15.01.2010
comment
привет, Фрэнк, хостинг-провайдер использует прокси на своих облачных серверах. Поэтому, когда я делаю вызов cURL, он выходит с моего сервера и через прокси-сервер, а затем на URL-адрес, который я хочу.   -  person pawelglow    schedule 15.01.2010


Ответы (4)


При использовании потокового API и оболочки, использующей сокет-оболочку, вы можете установить привязать параметр контекста для выполнения (1):

Used to specify the IP address (either IPv4 or IPv6) and/or the port number that PHP will use to access the network. The syntax is ip:port. Setting the IP or the port to 0 will let the system choose the IP and/or port.
$ctx = stream_context_create( array(
  'socket' => array(
    'bindto' => '192.168.0.107:0',
   )
));

$c= file_get_contents('http://php.net', 0, $ctx);
person VolkerK    schedule 14.01.2010
comment
Использование свойства «bindto» было ключом к решению этой проблемы. Спасибо - person pawelglow; 15.01.2010

А как насчет file_get_contents($url)? Просто обратите внимание, что для некоторых веб-сайтов требуется пользовательский агент, поэтому вам нужно будет установить его с помощью ini_set() перед вызовом.

person Sampson    schedule 14.01.2010

Вероятно, вы могли бы использовать для этого fopen.

person ChristopheD    schedule 14.01.2010
comment
+1 Да, и если fopen_url_wrappers не включен, всегда есть функции сокета более низкого уровня. - person John Parker; 15.01.2010

Пробовали ли вы file_get_contents

<?php
$homepage = file_get_contents('http://www.stackoverflow.com/');
echo $homepage;
?>
person Yada    schedule 14.01.2010