За последние 24 часа нас посетили 22406 программистов и 1056 роботов. Сейчас ищут 627 программистов ...

Странное поведение fsockopen

Тема в разделе "Прочие вопросы по PHP", создана пользователем AterCattus, 13 окт 2008.

  1. AterCattus

    AterCattus Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Появился вопрос несколько абстрактного плана.
    Есть сервер, на нем есть некоторый скрипт, который через fsockopen() коннектится на 80 порт определенного хоста.
    Локально все прекрасно работает на этот адрес и на другие, удаленно работает ТОЛЬКО на другие. Почему может не работать? Возникает ошибка тайм-аута.

    Вот мне в голову приходит только один вариант: удаленный сервер закрыл доступ к себе с некоторых адресов, включая тот, на котором крутится скрипт ( инфобокс ).
     
  2. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    *чешет репу*
     
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Вот точно такой же миной, только меньше, но другой, дельфины, воевавшие на нашей стороне, взорвали немецкий крейсер Гюнтер Мессер ©

    воровать плохо
     
  4. AterCattus

    AterCattus Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    [vs]
    да, очепятка. поправил.

    Luge
    Да при чем тут воровать? Меня попросили "скорректировать скрипт", чтобы он работал. А он вот такое выдает! Ладно б всегда ругался, так ведь только при подключении к требуемому серверу!
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а время сейчас такое. Нет к людям веры.

    А почему бы не написать админу того сайта, к которому коннекта нет? С ним на пару и решилось бы.
     
  6. AterCattus

    AterCattus Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Luge

    PHP:
    1. $host = 'vkontakte.ru';
    2. ...
    3. $send = 'GET /audiosearch.php?'.$q." HTTP/1.1\r\n";
    4. ...
    5. $socket = fsockopen( $host, 80, $errno, $errstr, 5 );
    ;-)

    P.S. Поисковик музыки. Подробностей не знаю - имею только скрипт.

    P.P.S. Локально и скрипт работает и telnet на 80ый порт подключается. Что-то похоже именно с сервером, на котором крутится скрипт.
     
  7. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Возможно, опечатка в запрсе. После формирования всей строки HTTP-запрса, выведи её на экран - в коде можно чего-нибудь не заметить.
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    в http запросе попробуй Host указать
    а так же user agent, referer может куки нужно...
     
  9. AterCattus

    AterCattus Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Не вдаваясь в подробности ( код не мой! я только вынес имя в $host, чтобы дважды не повторяться ):
    PHP:
    1. $host = 'vkontakte.ru';
    2. if(empty($page) || $page <= 1) $page = 0;
    3. else $page = ($page.'00' - 100);
    4. $q = 'q='.urlencode($q).'&add=1&st='.$page;
    5. $send = 'GET /audiosearch.php?'.$q." HTTP/1.1\r\n";
    6. $send .= "Host:".$host."\r\n";
    7. $send .= "User-Agent: Mozilla/5.0\r\n";
    8. $send .= "Pragma: no-cache\r\n";
    9. $send .= 'Cookie: '.account()." \r\n";
    10. $send .= "Connection: Close\r\n\r\n";
    11. $socket = fsockopen( $host , 80, $errno, $errstr, 5 );
    account() - формирует строку вида "remixlang=0; remixchk=5; remixmid=XXXXXX; remixemail=XXXXXX; remixpass=XXXX"
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    мм блин,
    ну значит сам бог не велит воровать с вконтакте =))
     
  11. AterCattus

    AterCattus Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Ок, так и передам ;-)
     
  12. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    попробуй указать ip вместо хоста.
     
  13. AterCattus

    AterCattus Активный пользователь

    С нами с:
    6 фев 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    neverlose
    Да пробовал. Аналогично.