Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
1

Keep-Alive соединение и Cookie

07.10.2015, 23:38. Показов 2031. Ответов 16
Метки нет (Все метки)

Доброго времени суток, товарищи программисты. Столкнулся с такой вот ситуацией:
При попытке получить страницу сайта, используя HttpURLConnection, встретил переадресацию javascript, и соответственно setFollowRedirects() не помогает.
Пытаюсь получить страницу www . alljobs . co . il
а получаю:

HTML5
1
<html><head><meta charset="utf-8"></head><body><script>window.rbzns = {fiftyeightkb: 43200000, days_in_week : 7};</script><script src="//d1a702rd0dylue.cloudfront.net/js/sugarman/v7/flat.js"></script><script>rbzns.challdomain="www.alljobs.co.il"; rbzns.ctrbg="f7cULHR6xO4lj8yDgCyvnNxabx01l0RVkFY0JZf5bfjTEcB2VWeSslBnqIwyGQJxyj8+7JvXKc5DrhYviEAfbM11QbbV6JZwcLBJEdGxZPBhXyyvXGBAfv/nKhl7PAnLPKfJfVFVQ0bVxJ5noJLmtEwgO38XKGoTSx/CaSPFtilTe/XOhIVayDW44NLuEDI0qG5tYAGBb8jnm/O84EC75A==";rbzns.rbzreqid="nv-alljobs-reblazer231343434323436373036fd61c010943bc4ef"; winsocks(true);</script></body></html>
Кроме того, вопрос вот еще какой:
Как правильно обращаться, что бы любой сайт (сервер) принимал запрос как обычного браузера а не видел во мне робота (автоматический запрос) ?

Мой Connection сегодня выглядит вот так:

Java
1
2
3
4
  url = new URL(address);
            HttpURLConnection HUC =  (HttpURLConnection) url.openConnection();
            HUC.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
            HUC.connect();
Подскажите пожалуйста, как правильно формировать соединение, что бы хитрые сайты и серверы не определяли соединение как робота ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2015, 23:38
Ответы с готовыми решениями:

Почему Cookie в куки заносится значение, а в другом файле Cookie пуста?
Здравствуйте подскажите что я не так делаю все вроде по примерам да ошибок как токавых нет.. но не...

keep-alive в Qt
Нарыл код простейшего однопоточного http-сервера. main: #include &lt;QCoreApplication&gt; #include...

It is alive!
Как?! Как это может быть?! #include &lt;iostream&gt; int main () { int i = 4; char c = i; ...

Stayin’ Alive
Долго думала, куда написать: в форум о здоровье или в форум о музыке... Решила всё-таки в здоровье...

16
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
09.10.2015, 21:49  [ТС] 2
Продолжая заниматься разбором данного вопроса, я понял, что тема создана неправильно. Точнее вопрос поставлен не правильно !

Просьба к администрации сайта, удалить данную тему, или переименовать в "Keep-Alive соединение и Cookie"

Товарищи программисты, ну неужели не кто не сталкивался с данным вопросом ? Получается следующее: Соединение по адресу определяется как Keep-Alive.

Отправляю запрос для получения шапки страницы:

Java
1
2
3
4
5
6
7
8
9
HttpURLConnection HUC =  (HttpURLConnection) url.openConnection();  
 
             Map<String, List<String>> heder= HUC.getHeaderFields();
                Set<String> hdrKeys = heder.keySet();
              
                
                for (String k : hdrKeys){
                  System.out.println("Key: " + k + "  Value: " + heder.get(k));
                }
И в результате, нет не единого слова о Cookie !
Проверяю браузером, содержатся Cookie. На сколько я понимаю, - это как дополнительная защита соединения, генерируемая скриптом.

Делаю полный дубль параметров Request Headrs из браузера и засовываю в setRequestProperty() - Все работает!

Но, меня интересует теперь следующее, - как забрать Cookie не копируя ручками из браузера ?

Java
1
2
3
4
5
6
HUC.setRequestProperty ("Cache-Control", "max-age=0");
            HUC.setRequestProperty ("Connection", "keep-alive");
            HUC.setRequestProperty ("Cookie",PARAMETR );
            HUC.setRequestProperty ("Host", "www.alljobs.co.il");
            HUC.setRequestProperty ("Upgrade-Insecure-Requests", "1");
            HUC.setRequestProperty ("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
Добавлено через 8 минут
getHeaderFields() Возвращает вот это -
Кликните здесь для просмотра всего текста
Key: null Value: [HTTP/1.1 200 OK]
Key: expires Value: [Thu, 01 Jan 1970 00:00:01 GMT]
Key: Cache-Control Value: [no-cache, private, no-transform, no-store]
Key: Server Value: [Reblaze Secure Web Gateway]
Key: Connection Value: [keep-alive]
Key: P3P Value: [CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"]
Key: PageSpeed Value: [off]
Key: Date Value: [Fri, 09 Oct 2015 18:20:18 GMT]
Key: Content-Type Value: [text/html; charset=utf-8]
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
09.10.2015, 23:52 3
IGROK@, адрес напишите куда вы ходите
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
10.10.2015, 00:07  [ТС] 4
KEKCoGEN, В смысле ? Вы хотите сказать другим, чтоб они туда не ходили ?

Добавлено через 8 минут
если вас смущает "Keep-Alive" то можете написать что вам угодно... TCP / HTTP или то как вы считаете будет более правильным
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
10.10.2015, 03:44 5
Цитата Сообщение от IGROK@ Посмотреть сообщение
Вы хотите сказать другим, чтоб они туда не ходили ?
да. Именно поэтому я и задал этот вопрос
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
10.10.2015, 10:05  [ТС] 6
KEKCoGEN, Я смотрю вы не желаете отвечать по теме, и это уже не первый раз с вашей стороны такого рода сарказмы.
Я отклонюсь от темы, и попробую коротко вам объяснить что вы не правы!
- 1. Если вы считаете что вопрос поставлен не правильно, или человек не совсем корректно излагает суть вопроса, - это не означает что вы самый умный, ибо умный человек, отвечающий по теме, поправит и объяснит, а не будет рассказывать о уровне образованности и выборе правильного учебного заведения.

Кроме того, ЛЮБАЯ ПРОГРАММА, предназначена для решения задачи, или облегчения работы (какой бы то нибыло сферы) человеческой сферы деятельности, а в конечном счете бизнеса.

А если программа справляется со своими задачами (облегчение, улучшение, автоматизация - БИЗНЕС), тогда она востребована. И плевать всем (кроме программиста, который правит код) как оно написано - Главное что работает !

KEKCoGEN, - ЗАПОМНИТЕ !
1 - Идея!
2 - Реальность идеи
3 - Рентабельность и целесообразность

(p.s. Я много работал в архитектуре, и не однократно слышал и видел, как куча инженеров плюются чертя сложную строительную документацию, на основе идеи Архитектора - дизайнера. Но мало кто из них задумывается, что они получают деньги, благодаря тому, что идея и рентабельность решают их зарплату и обеспечивают их работой) Тоже самое, я считаю и по отношению к программированию. Вы программист - технарь, а я архитектор Я создаю идеи, и если они работают, вы (или кто-то другой) допишите код так, как это правильно с технической точки зрения Главное что бы это было нужно людям, и целесообразно с точки зрения бизнеса.

А если вы не желаете помогать или подсказывать людям, которые менее подкованы технически чем вы - то грош вам цена как человеку.
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
10.10.2015, 13:31 7
IGROK@, я поясню зачем я задал вам свой вопрос
Смотреть на код и искать проблему - не самый эффективный способ. Лучше запустить код самому и посмотреть что не так. Для этого я и попросил у вас адрес куда вы отправляете запрос.

То что вы написали ниже к теме не относится вообще непонятно к чему это.
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
10.10.2015, 13:44  [ТС] 8
Куда я обращаюсь (хожу), написано в первом посте --- www . alljobs . co . il

Добавлено через 4 минуты
Вопрос прежний:
Цитата Сообщение от IGROK@ Посмотреть сообщение
Делаю полный дубль параметров Request Headrs из браузера и засовываю в setRequestProperty() - Все работает!
Но, меня интересует теперь следующее, - как забрать Cookie не копируя ручками из браузера ?
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
10.10.2015, 14:42 9
IGROK@, когда вы запрашиваете адрес сайта, сначала выполняется скрипт по адресу
http://d1a702rd0dylue.cloudfro... v7/flat.js

Он на основе всяких разных данных броузера\клиента (не смотрел особо) генерирует куки ключ вида
Cookie: rbzreqid=nv-alljobs-reblazer3313434343437373130311b65e1b0cba54cc5; rbzid=TVI4OXdQTytrUS9YM0Y4K0xCL1lZWFZNWldLOTFSUzVOTXZPTEtIcz dJQmlYYkpWMFhMQ2wzaG5FMDBqQzJXdEhlZUsxRG1WMEtoREpqNFhrellNd3 hjbnNjc0lvdklJNWVQUDM0S2M2b3hUaW9mdzQzV3RWM1BqeDZ2UGIyRmlSOH VJMHU0b3ZWaHNFenJWdmVOdzVqMnJiaHc1Q2ZZNHN5S2pLZytPTjZDNFBRbm 5XMzM0eDFobExHNmJTZWZrUmFKeTFtZmFhWjZSVWNJaldSaFNlZml0cmNUVX ZpeWVUdTJiWHc0U0lRQ1p6RFp1TXIwL2c2cXl2dDNpbXVSQ1IrVFVkTW9OMX BqU0MrODBGVzU5WnlVdVJRck10MExhUFBtb1N4VWxrTFU9QEBAMzAyQEBALT IyMjIyMjIyMDIw
Затем опять идет вызов alljobs с этими значениями и сервер в ответ на них дает куки сессию с которой потом можно ходить по сайту.

Запустить этот скрипт из кода затруднительно т.к он использует API броузера в частности объект window который не сущестует если мы запускаем скрипт не из окна браузера.

Думаю решением тут может быть использование Selenium Web driver
Который откроет окно браузера, получит сессию и затем можно уже будет делать все остальное.
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
10.10.2015, 15:00  [ТС] 10
- Возможно есть решение, которое позволит представлятся перед сайтами (серверами), эмитируя работу браузера без дополнительного софта ?

Просто фигня какая-то получается... У меня програмка строит Б/Д с разных сайтов, блуждая по просторам интернета, изучая структуры и запоминая их страницы. И получается такая ерунда, - сегодня этот сайт со своим скриптом, а завтра другой... А если их на собирается N - то... Не хорошо как то...

KEKCoGEN, - спасибо за ответ.
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
10.10.2015, 15:10 11
Цитата Сообщение от IGROK@ Посмотреть сообщение
Возможно есть решение, которое позволит представлятся перед сайтами (серверами), эмитируя работу браузера без дополнительного софта ?
селениум именно это и делает. Если не считать сам броузер, то доп. софта нет.

Можно самому описать API броузера, но дело это муторное и работать все равно будет криво скорее всего.
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
10.10.2015, 16:05  [ТС] 12
Плохо! Все очень плохо !!! ))))

Как вы думаете - виртуализация обработки данных полученных от сервера, эмитируя работу браузера, - возможна ? куда смотреть и где копать ?
Ну не устраивает меня Selenium Web driver. У меня тысячи соединений - на всю ширину канала моего интернета. (гипотетически ) )

Блин, и все это из-за куки сессии
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
10.10.2015, 16:17 13
Цитата Сообщение от IGROK@ Посмотреть сообщение
данных полученных от сервера, эмитируя работу браузера, - возможна
гуглите, может кто-то имплементировал API броузера уже. Я о таком не слышал

Цитата Сообщение от IGROK@ Посмотреть сообщение
Ну не устраивает меня Selenium Web driver. У меня тысячи соединений
Используйте селениум только в тех случаях когда это необходимо (как тут). К тому же вам нужно лишь один раз открыть и получить куки для текущей сессии.
Для других сайтов пишите обычный парсер.
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
10.10.2015, 17:45  [ТС] 14
А как на счет подключения мобильного браузера к проекту ?
0
Эксперт Java
2361 / 2191 / 559
Регистрация: 28.12.2010
Сообщений: 8,584
11.10.2015, 16:09 15
IGROK@, в соседней теме советуют http://ru.selenide.org/
Там у ТС тоже проблема с cloudflare
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
11.10.2015, 16:30  [ТС] 16
Я тут решил, попробовать подключить библиотеку javafx, и использовать технологию браузера. Но доступ к многим полям закрыт! Буду пробовать Силениум
0
1 / 1 / 1
Регистрация: 05.04.2013
Сообщений: 225
15.10.2015, 19:07  [ТС] 17
KEKCoGEN, Спасибо, нашел уместным и целесообразным применение Selenium Web driver в отдельном потоке для отдельных случаев. Единственное, - теперь когда запущен проект, постоянно весит окно браузера
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2015, 19:07

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

HttpClient не работает Keep-Alive
Всем привет. Для запросов использую следующий метод: using (var client = new...

HTTP GET-запрос и keep-alive
Есть HTTP keep-alive соединение. Через него надо сделать серию GET-запросов. Со стороны клиента это...

Проблемы с передачей Cookie (очистка Cookie)
Всем привет! Кто нибудь пытался реализовать обмен с сайтом с авторизацией и сохранением Cookie?...

wiznet vs keep alive, как это работает???
Здравствуйте, заранее извиняюсь если тема не в той ветке или уже обсуждалась. ( но я никак не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.