- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
<?php
define('STOCK_URL', 'http://govnokod.ru/comments');
define('REFERER_URL', 'http://govnokod.ru/');
define('AUTH_COOKIES', 'a:2:{s:9:"PHPSESSID";s:26:"k719c8rqcm85dptista7b7rck7";s:4:"auth";s:32:"0ce5a7d54092aa07e37b88ffbe098135";}');
define('MODERATED_TEXT', '[color=red][i]Слава «Беркуту»![/i][/color]');
define('DEFAULT_UA', 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.16');
define('POST_HEADERS', "X-Requested-With: XMLHttpRequest\r\nContent-Type: application/x-www-form-urlencoded\r\n");
define('PONY1', "//ol[@class='posts hatom']/li/h2/a");
define('PONY2', "//form/div/input[@name='_csrf_token']");
define('PONY3', "//li[@class='hcomment']/div/a[@class='edit-comment-link']");
function myCookies() {
$map_cookies = function($k, $v) {return $k . '='. $v;};
return implode('; ', array_map($map_cookies, array_keys(unserialize(AUTH_COOKIES)), unserialize(AUTH_COOKIES)));
}
function huyarim($url, $referer, $mask, $attr) {
$context_options = stream_context_create(array('http' => array(
'method' => 'GET',
'user_agent' => DEFAULT_UA,
'header' => 'Referer: '. $referer . "\r\n" . 'Cookie: ' . myCookies()
)));
$links = array();
$file = @file_get_contents($url, false, $context_options);
if ($file) {
$old_libxml_error = libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML($file);
libxml_use_internal_errors($old_libxml_error);
$domxpath = new DOMXPath($dom);
$filtered = $domxpath->query($mask);
foreach ($filtered as $item) {
$links[] = $item->getAttribute($attr);
}
}
return $links;
}
function getList() {return huyarim(STOCK_URL, REFERER_URL, PONY1, 'href');}
function getCsrf($url) {$tokens = huyarim($url, STOCK_URL, PONY2, 'value'); return $tokens[0];}
function getComments($url) {return huyarim($url, STOCK_URL, PONY3, 'href');}
function doPost($url, $referer, $token) {
$postdata = http_build_query(array(
'_csrf_token' => $token,
'text' => MODERATED_TEXT,
'commentSubmit' => 'Отправить комментарий [Ctrl+Enter]',
'ajax' => 'true'
));
$context_options = stream_context_create(array('http' => array(
'protocol_version' => 1.1,
'method' => 'POST',
'user_agent' => DEFAULT_UA,
'header' => POST_HEADERS . 'Referer: '. $referer . "\r\n" . 'Cookie: ' . myCookies(),
'content' => $postdata
)));
return file_get_contents($url, false, $context_options);
}
$links = getList();
foreach($links as $link) {
$token = getCsrf($link);
$comments = getComments($link);
foreach($comments as $comment) {
if (false !== doPost($comment, $link, $token)) {
echo $comment . ' OK' . PHP_EOL;
}
}
}
CURL и PECL_HTTP не нужны. Да, и ООП тоже не нужно.
Stertor 19.02.2014 10:56 # −1
Это что, вброс г.. на на вентилятор?
inkanus-gray 19.02.2014 11:38 # 0
anonimb84a2f6fd141 19.02.2014 14:25 # 0
inkanus-gray 19.02.2014 14:38 # 0
defecate-plusplus 19.02.2014 11:42 # +2
а мой бобик блохаст
он очень пузат...
inkanus-gray 19.02.2014 11:44 # 0
defecate-plusplus 19.02.2014 11:46 # +2
anonimb84a2f6fd141 19.02.2014 17:55 # +2
Логин не осилил, лошара? :)
inkanus-gray 19.02.2014 18:05 # +1
Тактико-техническое требование: обеспечить логин через OpenID, потому что пароль владелец аккаунта в любой момент может сменить.
anonimb84a2f6fd141 20.02.2014 18:13 # −1
>ко-ко-ко, ниасилил, ко-ко-ко
Понятно.
Опенид зарегить тяжелее, чем 100 логинов на гк.
inkanus-gray 20.02.2014 20:35 # 0
1. Яндекс. Используем айдишник типа kokoko.ya.ru.
2. Мейлрушечка. Используем айдишник типа kokoko.id.mail.ru (или kokoko.id.inbox.ru, kokoko.id.list.ru, kokoko.id.bk.ru, в зависимости от домена).
3. Яху. Там айдишник некрасивый и напрямую из адреса ящика не выводится, надо смотреть в своём профиле.
4. Гугл. Такая же ситуация, как с Яху, но можно создать журнал в Блогспоте и использовать красивый айдишник kokoko.blogspot.com. Более того, на одну гугловскую учётку можно создать кучу блогспотовских журналов.
Для остальных провайдеров (например, myid.net, myopenid.com, oneid.ru, loginza.ru, livejournal.com, wordpress.com) потребуется предварительно регать е-мейл, но можно попытаться воспользоваться одноразовым мейлом.
Почему я заговорил про опенид? Благодаря Страйкеру здесь к учётке можно привязывать опенайдишники, а кнопки для отвязывания я не нашёл. Т. е. один раз привязав опенайдишник к захваченной чужой говнокодовской учётке, ты получишь её навсегда. Первый владелец может даже сбрасывать пароль, но ему это не поможет. Отвязать опенайдишник можно только через письмо Страйкеру.
anonimb84a2f6fd141 20.02.2014 21:04 # 0
Horse2 20.02.2014 21:42 # 0
Привязать блогспотовский айдишник к ГК сейчас не получилось из-за бага в пыховской библиотеке ('Dumb' signature verification failed), но зато привязал основной гугловский айдишник. Он у меня выглядит так:
https://www.google.com/accounts/o8/id?id=AItOawkju6u9WPJg9TpeIfxulrf6Rewavjo8qhI
(вводить при логине надо https://www.google.com/accounts/o8/id).
Итого: минута на регистрацию, телефон не нужен.
В Яндексе и в Мэйле ещё быстрее.
Stertor 20.02.2014 21:51 # 0
Товарищи, есть ли способ создать свой мейл-сервер, чтобы получать ссылки на подтверждение емейл-адресов чтобы регистрировать анкеты на сайтах? Возможно ли сделать это на Delphi/Indy?
Horse2 20.02.2014 21:53 # 0
Stertor 20.02.2014 22:00 # 0
На вкладке компонентов Indy есть компонент - IdSmtpServer.
Может, у кого-то есть опыт работы с ним?
defecate-plusplus 20.02.2014 23:23 # +4
первая буква в smtp означает Simple
это простейший текстовый протокол
Stertor 20.02.2014 23:38 # 0
Какой должен быть хост? На какой адрес отправлять, как он будет выглядеть?
inkanus-gray 20.02.2014 23:52 # +5
Если почтовый сервер видит адрес получателя [email protected], то он спрашивает у DNS для домена yamudak.com запись типа MX. Допустим, там будет запись Тогда почтовый сервер приконнектится к tcp-порту № 25 машины smtp.yamudak.com, а дальше отправитель и smtp.yamudak.com будут общаться согласно RFC 2821.
smtp.yamudak.com: 220 Привет, я типа почтовый сервер! Я клёвый!
Отправитель: EHLO gmail.com
smtp.yamudak.com: 250-<тут он сообщит, какой он крутой и какие команды он поддерживает>
Отправитель: MAIL FROM:<[email protected]>
smtp.yamudak.com: 250 OK
Отправитель: RCPT TO:<[email protected]>
smtp.yamudak.com: 250 OK
Отправитель: DATA
smtp.yamudak.com: 354 Что ж, начни отправлять письмо, закончи переносом строки, точкой и ещё одним переносом.
Отправитель: <тут он отправит письмо со всеми заголовками>
smtp.yamudak.com: 250 OK
Отправитель: QUIT
smtp.yamudak.com: 221 Чмафки, лю тя!
< Отправитель покинул чатик >
Вот и вся любовь. На айпи отправить е-мейл нельзя.
inkanus-gray 21.02.2014 00:05 # 0
Stertor 21.02.2014 00:06 # 0
bormand 21.02.2014 06:31 # +3
Да не, тут stertor прав. Зачем изобретать велосипед, если есть готовая реализация этого протокола?
defecate-plusplus 21.02.2014 07:53 # +2
уверен, что реализовал этот смтп-сервер такой же программист мышкой
школьники, займитесь делом, почитайте хотя бы педивикию, раз rfc не можете
bormand 21.02.2014 08:17 # +1
Ты просто им завидуешь.
Да и никто не заставляет кидать этот компонент на форму. Можно подключить модуль через uses и создавать инстанс вручную.
defecate-plusplus 21.02.2014 08:27 # +3
точно, всю жизнь мечтал писать программы в обработчиках Form1.Button1 бесполезных толстых клиентов под единственную ОС
anonimb84a2f6fd141 21.02.2014 16:40 # −1
defecate-plusplus 21.02.2014 16:55 # 0
inkanus-gray 21.02.2014 10:20 # 0
P.S. Мне страшно представить велосипедную реализацию STARTTLS компайл-тайм на макросах.
defecate-plusplus 21.02.2014 10:37 # 0
он же не собирается делать промышленный сервер, на дельфи-то
anonimb84a2f6fd141 21.02.2014 16:42 # +1
>компайл-тайм на макросах.
Это теперь аналог "на скриптах за 5 минут по айпишнику на уровне ядра"?
inkanus-gray 21.02.2014 23:35 # +2
wvxvw 21.02.2014 12:47 # +3
Коллега - "Виндовс-программист" (т.е. он умеет только пользоваться программами с графическим интерфейсом, и считает, что Виндовс 8 - самая лучшая во всех отношениях операционная система, если бы он умел читать/писать по-русски, был бы вылитый Стертор). Вобщем, решил он писать эту программу на АИРе.
Наш проект собирается Антом, поскольку скрипты для сборки писал я, коллега пришел ко мне:
--Слышь, мне тут нужно библиотеку со шрифтами [...].
Я ему нашел три опенсорные реализации на Хексе (компилируется во много разных языков, в том числе в исходники С++, флешевый байткод). Объяснил, что Ант ему не нужен, потому-что сам по себе не имеет отношения к перекодировке шрифтов из ТТФ в флешевый формат, что Ант за собой потащит Яву и Флексовый компилятор, все в комплекте - почти гигабайт.
В итоге у всех в дизайнеров в оффисе теперь есть по копии Флеск СДК + программа собраная в АИР перетаскиванием компонент мышкой. Коллега поднял свой авторитет среди дизайнеров, бегая с умным видом от компа к компу скачивая им Яву и СДК. Теперь он просто незаменим.
anonimb84a2f6fd141 21.02.2014 16:38 # 0
Что-то такое есть. Порабощенные спермомирком.
anonimb84a2f6fd141 21.02.2014 16:49 # 0
defecate-plusplus 21.02.2014 16:59 # +1
алсо половина таких либ написана для однопоточных анскильных питушков, которым всё что нужно - это выполнить 1 запрос в секунду из своего убогого приложения
или ты даже не осилил составить или разобрать http заголовок?
anonimb84a2f6fd141 21.02.2014 18:27 # +1
Когда-то делал закат солнца вручную, потом бросил. Увидишь библиотеку вроде requests - поймешь, какой же ты мудак.
defecate-plusplus 21.02.2014 18:43 # +1
requests - судя по примеру прямо на их заглавной странице - обыкновенный однопоточный блокирующий шит
читай про event-driven
guest 25.02.2014 02:31 # 0
defecate-plusplus 25.02.2014 09:40 # 0
bormand 25.02.2014 09:50 # +1
> сервер
WTF? Requests это же всего лишь http клиент.
А асинхронная серверная часть, емнип, есть в twisted. Х.з.че у не со скоростью, питон не особо дружит с перфомансом и потоками..
defecate-plusplus 25.02.2014 09:58 # 0
> алсо половина таких либ написана для однопоточных анскильных питушков, которым всё что нужно - это выполнить 1 запрос в секунду из своего убогого приложения
вот и вернулись к тому, с чего всё начиналось
bormand 25.02.2014 10:08 # 0
Более того, этот requests блокирующий.
guest 25.02.2014 14:18 # 0
defecate-plusplus 25.02.2014 14:23 # 0
иначе ты даже тупо не сможешь нажать на крестик своего окошка, пока отправил http запрос хуй пойми куда
(к слову, даже в убогом winhttp есть асинхронность, правда неуправляемая по ресурсам)
TarasB 25.02.2014 14:34 # −1
Причём тут потоки?
Stertor 25.02.2014 14:38 # 0
defecate-plusplus 25.02.2014 14:51 # −1
другое дело - сигнал
TarasB 25.02.2014 14:53 # −1
Зависнуть в процессе обработки сообщения от сервера? Мне кажется, этот вопрос уже не имеет отношения к сетям.
defecate-plusplus 25.02.2014 14:55 # −1
воот, даже до Тараса дошло, что в сетевых вопросах без асинхронности никак
TarasB 25.02.2014 15:53 # −1
roman-kashitsyn 25.02.2014 16:01 # +1
guest 25.02.2014 16:29 # 0
Определи серьезное приложение. 400 потоков - это серьезно? Прекрасно работает на тредах.
>иначе ты даже тупо не сможешь нажать на крестик своего окошка, пока отправил http запрос хуй пойми куда
Чем треды не устраивают?
roman-kashitsyn 25.02.2014 16:36 # +1
guest 05.03.2014 01:53 # 0
defecate-plusplus 25.02.2014 16:41 # 0
400 потоков - навскидку должны держать 12к соединений плюс минус трамвайная остановка (зависит от того, насколько интенсивный обмен)
1 поток на 1 соединение - это фуфел, годно только для тех, кто уже ограничен инструментом и не может никак иначе
это, замечу, пока ещё не ввели таймаут этого соединения - и если этим занимается тупоголовый блокирующий программист, то в результате ещё +1 поток на соединение (один ждёт чтения на сокете, второй - ждёт срабатывания таймера, чтобы прибить первый тред)
guest 05.03.2014 01:54 # 0
Для сервера.
anonimb84a2f6fd141 21.02.2014 05:03 # +1
inkanus-gray 21.02.2014 10:17 # +1
anonimb84a2f6fd141 21.02.2014 16:39 # +1
inkanus-gray 21.02.2014 23:33 # 0
У меня однажды Фейсбук фотографию банковской карточки спросил, но через месяц передумал и разблокировал, не дождавшись моего ответа. Едва ли не все крупные сети время от времени берут пользователей на испуг.
anonimb84a2f6fd141 21.02.2014 16:50 # +1
inkanus-gray 21.02.2014 23:31 # 0
В Одноклассниках и даже во Вконтакте сейчас без телефона нельзя... Но если очень хочется, то можно: http://sms-reg.com/
Порядка 10 российских рублей. Деньги можно перевести, например, с анонимного ящика Яндекс-денег, на который в РФ можно анонимно закинуть наличные через терминал экспресс-оплаты. Теоретически нет гарантии, что аккаунт потом не уведут, потому что никому не известно, в чьих руках симка, на которую принимали SMS, но по отзывам злоупотреблений пока не было.
anonimb84a2f6fd141 20.02.2014 18:14 # +1
guest 25.02.2014 00:05 # +2
* ВАЖНАЯ ИНФОРМАЦИЯ *
**************************************** ****
Никнейм: anonimb84a2f6fd141
Openid: anonim-backdoor.id.mail.ru
Пароль от openid: dc604057d2ea
Никнейм: Horse2
Openid: horse2-backdoor.id.mail.ru
Пароль от openid: SG9yc2Uy
Никнейм: Horse3
Openid: horse3-backdoor.id.mail.ru
Пароль от openid: SG9yc2Uz
Никнейм: Konardo
Openid: konardo-backdoor.id.mail.ru
Пароль от openid: S29uYXJkbw==
Менять пароли от опенайдишников бессмысленно, потому что в любой момент можно привязать новые.
guest 07.03.2017 02:15 # 0
-----
<a href=http://konfiskat-optom.com/>электроника каталог</a> | http://konfiskat-optom.com/