HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.05.2011, 18:01
bnromanoff
Новичок
Регистрация: 10.05.2011
Сообщений: 6
С нами: 7899446

Репутация: 0
По умолчанию

Доброго времени суток!

Есть необходимость отправить на сайт, находящийся на виртуальном хостинге masterhost, порядка 100 млн. POST-запросов и определенным образом зафиксировать результат.

Написал php-скрипт, осуществляющий перебор, однако возникла проблема со скоростью:

fsockopen() работает медленно, порядка 0.2-0.3 секунды на запрос, даже если в открытый сокет послать пачку запросов, и уже после принимать результат

При использовании curl результат более приемлемый, при работе в 2 потока на запрос уходит порядка 0.03 секунды, однако процесс периодически залипает на несколько секунд. Если использовать больше потоков - валится сайт с ошибкой 503.

Возможно есть какой-то более быстрый способ? Для фиксации результата можно использовать только заголовки, однако при использовании HEAD-запроса невозможно отправить данные через POST. Обрезать размер получаемых данных через curl также не представляется возможным - сервер не возвращает длину контента, поэтому ограничение CONTENT_LENGTH не работает.

Буду признателен за советы!
 
Ответить с цитированием

  #2  
Старый 13.05.2011, 18:53
Expl0ited
Познавший АНТИЧАТ
Регистрация: 16.07.2010
Сообщений: 1,022
С нами: 8328566

Репутация: 935


По умолчанию

Цель какая преследуется?

Если нужно слить инфу например через скул инъекцию, тогда сложно что-то придумать если сайт падает с двух потоков (если бы не падал, можно было например запустить распределенный дамп с 10-100 серверов, и слать результаты на один), если тебе важно получить ответ от сервера, тогда ускорить процесс можно только многопоточностью. Да даже если цель какая-то другая, ты можешь уронить сервак (читай как задидосить) своими запросами.
 
Ответить с цитированием

  #3  
Старый 13.05.2011, 19:02
bnromanoff
Новичок
Регистрация: 10.05.2011
Сообщений: 6
С нами: 7899446

Репутация: 0
По умолчанию

Цель именно получить информацию, т.е. ответ сервера на каждый из посылаемых запросов.

В моем случае, в ответ на каждый запрос возвращается полный код страницы, но достаточно будет только получить заголовки ответа.

Если есть способ получить только заголовки в ответ на POST-запрос, думаю это позволит ускорить перебор, по крайней мере будет не так забивать канал.
 
Ответить с цитированием

  #4  
Старый 13.05.2011, 19:18
Expl0ited
Познавший АНТИЧАТ
Регистрация: 16.07.2010
Сообщений: 1,022
С нами: 8328566

Репутация: 935


По умолчанию

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#DD0000"]'value'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'var2'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'value'[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$host[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'http://php.net/'[/COLOR][COLOR="#007700"];

print[/
COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];

print[/
COLOR][COLOR="#0000BB"]implode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
'
[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]get_header[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$host[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$post[/COLOR][COLOR="#007700"]));

print[/
COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR] 
 
Ответить с цитированием

  #5  
Старый 13.05.2011, 19:21
bnromanoff
Новичок
Регистрация: 10.05.2011
Сообщений: 6
С нами: 7899446

Репутация: 0
По умолчанию

Увы, такой вариант пробовал - CURLOPT_NOBODY не работает вместе с POST, т.е. при

curl_setopt($curl, CURLOPT_NOBODY, 1);

посылается HEAD-запрос, несмотря на то, что отмечен CURLOPT_POST
 
Ответить с цитированием

  #6  
Старый 13.05.2011, 19:22
Expl0ited
Познавший АНТИЧАТ
Регистрация: 16.07.2010
Сообщений: 1,022
С нами: 8328566

Репутация: 935


По умолчанию

Собственно я так и не понял, что именно не работает?
 
Ответить с цитированием

  #7  
Старый 13.05.2011, 19:29
bnromanoff
Новичок
Регистрация: 10.05.2011
Сообщений: 6
С нами: 7899446

Репутация: 0
По умолчанию

Скрипт на сайте, к которому обращается наш скрипт, принимает данные только через метод POST

Если использовать Вашу функцию:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]curl_init[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$host[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_POST[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_POSTFIELDS[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$data[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_RETURNTRANSFER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_HEADER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_NOBODY[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$content[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]curl_exec[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]curl_close[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$curl[/COLOR][COLOR="#007700"]);

return[/COLOR][COLOR="#0000BB"]explode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"\r\n"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$content[/COLOR][COLOR="#007700"]);[/COLOR][/COLOR
то curl при отмеченном параметре CURLOPT_NOBODY, посылает HEAD-запрос на сайт, вместо нужного нам POST, независимо от того, стоит ли флаг CURLOPT_POST.

А в описании протокола http говорится, что метод HEAD во всем идентичен методу GET, за исключением одного - ответ на HEAD-запрос не содержит тела сообщения, только заголовки.

Таким образом, если отметить CURLOPT_NOBODY, то параметры запроса будут посланы методом GET, и целевой скрипт их не обработает => не возвратит нужный результат.

Доказано опытным путем )
 
Ответить с цитированием

  #8  
Старый 13.05.2011, 20:26
bnromanoff
Новичок
Регистрация: 10.05.2011
Сообщений: 6
С нами: 7899446

Репутация: 0
По умолчанию

1. Уверен, при наличии любого GET параметра возвращает 404

2. Пробовал - увы, разница даже если и есть, то практически незаметна
 
Ответить с цитированием

  #9  
Старый 14.05.2011, 19:59
попугай
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
С нами: 9642449

Репутация: 606


По умолчанию

А что fsockopen работает медленнее чем curl?
 
Ответить с цитированием

  #10  
Старый 14.05.2011, 20:04
bnromanoff
Новичок
Регистрация: 10.05.2011
Сообщений: 6
С нами: 7899446

Репутация: 0
По умолчанию

Да, в моем случае один запрос через curl выполняется быстрее на порядок чем через fsockopen
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору. Комиссия форума: 2%.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

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