Рейтинг
0.00
голосов:
0
avatar

Разработка  

Php сокеты, подмена юзер агента(браузера)

Если нужно написать скрипт, который будет жрать страницы заданного сайта, маскируясь ботом Гугла :), то делаем так:

$host = 'www.site.ru'; //сайт, к которому будем обращаться
$headers=array(
'get' => 'GET /index.php HTTP/1.0', //заголовок, какой url брать
'host' => 'HOST: ' . $host, //объявляем, к какому сайту будем обращаться
'useragent' => 'User-Agent: GoogleBot/1.1', //собсна ОНО - юзерагент :)
'cc' => 'Connection: close' //вежливо сообщим серверу, чтоб закрыл соединение
);

echo "Ответ сервера
";
$out = '';
$spy = fsockopen($host, 80, $errno, $errstr, 5); //5 - таймаут ожидания, сек
if(!$spy) {

echo 'Ошибка создания сокета

';

echo $errno . ': ' . $errstr;
}

else if (fwrite($spy, implode("\n", $headers) . "\n\n")) { //пишем запрос в сокет
while(!feof($spy)) {
$out .= fgets($spy, 1024); //тут же читаем ответ

}

}
echo '
' . htmlspecialchars($out) . '
';
}




Пример ответа сервера

HTTP/1.0 200 OK
Connection: close
Content-Type: text/html; charset=windows-1251
Accept-Ranges: bytes
ETag: "2050193158"
Last-Modified: Mon, 04 Jun 2007 13:35:59 GMT
Content-Length: 2110
Date: Fri, 22 Jun 2007 13:49:23 GMT
Server: httpd



..... здесь исходный код страницы ....







Чтобы отделить заголовки ответа от контента - просто отбрасываем все до первой пустой строки

Юзергенты:
Опера:
Opera/9.80 (Windows NT 5.1; U; SymbianOS/9.2; ru) Presto/2.2.15 Version/10.00
Фокс:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30

Вот просмотр своих заголовков

Mysql против MongoDB

1: "В конце концов, мы убедились, что MySQL — превосходная СУБД для нашего сайта. Есть вопросы?"
2: А скажите–ка вот что. Почему вы еще не используете MongoDB? Ведь MongoDB — это масштабируемая база данных, которая не использует всякие JOINы как и весь прочий SQL. Поэтому, она сверхпроизводительна!
1: "Хороший вопрос. Мы затестили несколько NoSQL хранилищ и пришли к выводу, что они все еще очень зеленые и не подходят для нас. MySQL — провернная база, которая используется на просторах веба повсеместно и умеет все, что нам надо."
2: Но у него нет той адовой масштабируемости! И дураку ясно, что реляционные базы немасштабируемы из–за всех этих JOINов и частой записи на диск!
1: "Масштабируемость — это все очень непросто. Так что, по этому поводу трудно найти какое–то универсальное и единственно правильное решение"
2: Реляционные базы не были сделаны с учетом возможного роста. MongoDB сама управляет масштабируемостью! Ты просто нажимаешь кнопку "Enabled" и все само работает.
1: "Ты, наверное, удивишься, но сейчас многие топовые сайтов используют реляционные СУБД и, в частности, MySQL"
2: Твой MySQL тормозной как черепаха! Зато вот MongoDB уделает его только так, потому, что он масштабируем.
1: "Да, MongoDB показывает впечатляющие результаты, но как его разработчики только не изъебнулись, чтобы набрать побольше очков в тестах. Например, когда вы записываете в MongoDB, на самом деле, вы ничего никуда не пишете. Вы откладываете запись до лучших времен. А если лучшие времена долго не наступают, случается вообще конец света. И пиздец. Звучит жизнеутверждающе, не так ли?"
2: Все, что им было надо для таких результатов этих гребаных тестов, так это Великая Архитектура под капотом у MongoDB!
1: "… Если вы достаточно скудоумны для того, чтобы полностью забыть о надежности, и думать только о бенчмарках, могу предложить вам лить данные в /dev/null. Это будет чертовски быстро работать!"
2: Ммм… Ну, если /dev/null быстро масштабируется, я, пожалуй, заюзаю это. Это масштабируемо?
1: "Ты, наверное, шутишь, придурок? Я же несерьезно. Я хотел сказать, что если ты готов использовать базу, которая в душе не знает, запишет ли твои данные, и использовать её только потому что хочешь видеть больших цифры в бенчмарках, отчего бы не хранить данные в /dev/null? Это будет пиздец как быстро."
2: А /dev/null поддерживает шардинг?
1: "Ебаный стыд! Ради моей бедной психики, давая, я буду считать, что ты просто дрочишься надо мной, а не настолько ебанутый, насколько кажешься. Блять, Вася, ты вообще знаешь, что такое шард?"
2: Шарды — это просто волшебный ингридиент волшебного зелья "Масштабирование". Они просто работают. Что от них еще нужно?
1: "Скажи мне срочно, что ты просто гуманитарий!"
2: Я — веб–программист!
1: "Да ну нахуй! Все, я увольняюсь с должности инженера–программиста и ухожу в колхоз ворочать дерьмо и взвешивать лошадиное слабительное для больных лошадок, потому что там я буду чувствовать себя спокойнее, нежели тут, осознавая, что работаю в одной индустрии с такими, блять, дуболомами. Ты открыл последний пост на хайлоад.народ.рф и думаешь, что разобрался не хуже архитекторов Гугла, заучил, как попугай, слова "масштабируемость" и "шардинг" но не имеешь и представления о чем это все. Ты собираешься отправить проект к чертям собачьим только потому, что играешься с софтом, как с деревянной елдой на 35 см. Реляционные базы повсюду с 70–х годов и являются одной из самых сложных технологий. Если тебе нужен поисковый движок для петабайт данных, то, флаг тебе в руки, делай свою базу. В остальных случаях поставь что–то типа MySQL и, если очень хочется, то Memcache"
2: Redis надрал зад memcache'а. Он такой быстрый и масштабируемый!
1: "Да… Уже представляю, как на ферме кастрирую своего первого быка…"
2: MongoDB — документная СУБД. Она использует map/reduce.
1: "А я в то самое время оттираю цисцерну от куриного дерьма, и мне хорошо, потому что мне не приходится слушать фанатов NoSQL, рассказывающих с пеной у рта о достоинствах своих безструктурных СУБД"
2: Благодаря записи в файлы, отображенные в память, MongoDB может увеличить скорость записи в 10 раз!
1: "Чтооо? Забудем транзации, согласованность и надежность, запихнем наши важнейшие данные в такую таблицу и сыграем похоронный марш. Я это все к тому, что кого ебет, что мы записываем в базу, если мы делаем это быстро? "
2: MongoDB использует атомарные модификаторы для увеличения производительности.
1: "Охохо, а сейчас я подхватил где–то заразу при чистке навоза и теперь медленно умираю. Я скоро умру, но это долгожданное облегчение. Мне не придется стать свидетелем краха мировой экономики, вызванного тем, что последователи NoSQL убедили финансовые учреждения отказаться от совершенно замечательных хранилищ данных, поскольку они не поддерживают масштабирование и этот злоебучий Map/Reduce"
2: MongoDB хранит файлы любого размера без каких бы то ни было усложнений.
1: "… Спасибо за вопросы. Презентация закончена, а я решил навсегда свалить в колхоз чтобы начать там карьеру ассенизатора."

MySQL шпаргалки

Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.


Читать дальше

NetBeans 6.9.1 язык программы.

Столкнулся с проблемой перевода программы NetBeans. Перевод просто ужасный, а в настройках программы вернуть обратно с русского языка на более понятный английский кнопок нету (или же я плохо искал). Вообщем решилась проблема с помощью добавление параметра --locale en:US к ярлыку программы.


Читать дальше