За последние 24 часа нас посетили 17842 программиста и 1650 роботов. Сейчас ищут 2047 программистов ...

Как реализовать проксирование Curl

Тема в разделе "Прочие вопросы по PHP", создана пользователем 0x0, 8 сен 2013.

  1. 0x0

    0x0 Новичок

    С нами с:
    29 авг 2013
    Сообщения:
    13
    Симпатии:
    0
    Задача очень не стандартная, попробую описать.

    Есть обычный хостинг, имеет ip допустим 173.194.32.183, на этом хостинге есть скрипт, который Curl'ом работает с вебсервисом через API. Доступ к этому вебсервису идет через ограничение по IP, т.е. с локалхоста не законектишься, только с ip 173.194.32.183.

    Подскажите как красиво реализовать так называемое "проксирование", задача такая чтобы с локалхоста отправлять запросы, получать ответы от вебсервиса, и чтобы все это шло через скрипт с хоста 173.194.32.183 ?
    Есть красивое решение? на том хостинге vpn не поднять, к ssh доступа нет http прокси не поднять.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда красивого нет
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    поднимать надо не на хостинге, а на хосте 173.194.32.183, чтобы курл мог подключиться через него.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это и есть хостинг.

    Вообще можно. Но это изъебство. Но я делал.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Например, написать http прокси на PHP. Я так делал: из заголовка извлекается host, к нему устанавливается соединение а 80-порт и всё, запись-чтение.
    Если надо работать в браузере или нескольким скриптам cURL сразу через такую прокси, то после подключения каждого клиента надо делать форк, который будет жить до завершения соединения, потому что браузеры качают в несколько потоков. И никаких Keep-Alive, этот заголовок надо изменять на Close принудительно.