сидел вот искал какую-нить готовую либу для c++, которая бы эмулировала браузер. тоесть я даю
ей запросы вида browser->get("url") или browser->post("url",....) и она делает нужные запросы, загружая страницы и парся их. естественно нужен полный доступ к DOM.
ранее решил это через автоматизацию IE (через COM) — но столкнулся с множеством нерешаемых проблем (наример куки общие на все сессии — тоесть нельзя пустить робота с несколькими независимыми потоками, input type=file нельзя изменять по соображениям секьюрити (это решил гемморойным методом) ).
поэтому прежде чем я начну изобретать колесо — скажите пожалуйста — есть ли чтото приблизительно такое готовое (код желательно кроссплатформеный). смотрел в сторону мозилы — она не может работать без графической оболочки а я планирую гонять свой софт на юникс веб сервере.
заранее большое спасибо за ответы/советы
14.12.06 13:56: Перенесено из 'C/C++'
Re: веб-клиент на c/c++ (эмулирующий браузер хотя бы частичн
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, vladie, Вы писали:
V>>хай всем!
CS>curl и libcurl
CS>http://curl.haxx.se/
на curl я смотрел. просто хотелось бы чтото интергрированное с javascript движком. есть, например, страницы, где форма через javascript-овский document.write выводится на экран только после нажатия кнопки. вот я хочу делать чтото типа document['someButton']->click а после этого заполнять и сабмитить эту форму. с нуля написать такое достаточно сложно и очень много времени займёт.
Re[3]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
Здравствуйте, vladie, Вы писали:
V>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, vladie, Вы писали:
V>>>хай всем!
CS>>curl и libcurl
CS>>http://curl.haxx.se/
V>на curl я смотрел. просто хотелось бы чтото интергрированное с javascript движком. есть, например, страницы, где форма через javascript-овский document.write выводится на экран только после нажатия кнопки. вот я хочу делать чтото типа document['someButton']->click а после этого заполнять и сабмитить эту форму. с нуля написать такое достаточно сложно и очень много времени займёт.
"с нуля написать такое достаточно сложно и очень много времени займёт."
А придется. Ибо скрипт знает про объект window . А window собственно и есть browser.
Т.е. без browser это не работает. Вмуровано это все в GUI — не вырвать.
Re[4]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
V>>на curl я смотрел. просто хотелось бы чтото интергрированное с javascript движком. есть, например, страницы, где форма через javascript-овский document.write выводится на экран только после нажатия кнопки. вот я хочу делать чтото типа document['someButton']->click а после этого заполнять и сабмитить эту форму. с нуля написать такое достаточно сложно и очень много времени займёт.
CS>"с нуля написать такое достаточно сложно и очень много времени займёт."
CS>А придется. Ибо скрипт знает про объект window . А window собственно и есть browser. CS>Т.е. без browser это не работает. Вмуровано это все в GUI — не вырвать.
ну это ясно. думал написать тулкит для мозиллы который бы якобы "выводил на экран", только на самом деле писал куда-то в память. но никаких док по этому поводу нет, а код слабо документирован ( слабо — мягко сказано ). чёрт. последний вариант — взять curl, xercesc, и javascript-движок от мозиллы и попробовать это скрестить.
Re[5]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
Здравствуйте, vladie, Вы писали:
CS>>"с нуля написать такое достаточно сложно и очень много времени займёт."
CS>>А придется. Ибо скрипт знает про объект window . А window собственно и есть browser. CS>>Т.е. без browser это не работает. Вмуровано это все в GUI — не вырвать.
V>ну это ясно. думал написать тулкит для мозиллы который бы якобы "выводил на экран", только на самом деле писал куда-то в память. но никаких док по этому поводу нет, а код слабо документирован ( слабо — мягко сказано ). чёрт. последний вариант — взять curl, xercesc, и javascript-движок от мозиллы и попробовать это скрестить.
И Xerces тебе не поможет. Ибо HTML это SGML а не XML .
Посмотрин на lynx. Это имхо ближе всего.
Еили возми уже тот Konqueror что-ли.
Но честно тебе скажу — что-то мне говорит что ты чего-то концептуально не то делаешь...
Re[6]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
V>>ну это ясно. думал написать тулкит для мозиллы который бы якобы "выводил на экран", только на самом деле писал куда-то в память. но никаких док по этому поводу нет, а код слабо документирован ( слабо — мягко сказано ). чёрт. последний вариант — взять curl, xercesc, и javascript-движок от мозиллы и попробовать это скрестить.
CS>И Xerces тебе не поможет. Ибо HTML это SGML а не XML . CS>Посмотрин на lynx. Это имхо ближе всего. CS>Еили возми уже тот Konqueror что-ли.
а ты не вкурсе — khtml тоже жестко привязан к выводу на экран или его можно использовать в консольном приложении?
CS>Но честно тебе скажу — что-то мне говорит что ты чего-то концептуально не то делаешь...
мне всего лишь надо сделать робота лазяющего по javascript-нагруженному сайту. ранее сделал такого просто вручную проинтерпретировав нужные скрипты — но это не выход — малейшее изменение скриптов — и надо переписывать робота.
Re[5]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
V>>>на curl я смотрел. просто хотелось бы чтото интергрированное с javascript движком. есть, например, страницы, где форма через javascript-овский document.write выводится на экран только после нажатия кнопки. вот я хочу делать чтото типа document['someButton']->click а после этого заполнять и сабмитить эту форму. с нуля написать такое достаточно сложно и очень много времени займёт.
CS>>"с нуля написать такое достаточно сложно и очень много времени займёт."
CS>>А придется. Ибо скрипт знает про объект window . А window собственно и есть browser. CS>>Т.е. без browser это не работает. Вмуровано это все в GUI — не вырвать.
V>ну это ясно. думал написать тулкит для мозиллы который бы якобы "выводил на экран", только на самом деле писал куда-то в память. но никаких док по этому поводу нет, а код слабо документирован ( слабо — мягко сказано ). чёрт. последний вариант — взять curl, xercesc, и javascript-движок от мозиллы и попробовать это скрестить.
vladie, у меня сейчас очень похожая задача! Чем кончились твои изыскания?
Re[6]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
Здравствуйте, S1, Вы писали:
S1>Здравствуйте, vladie, Вы писали:
V>>>>на curl я смотрел. просто хотелось бы чтото интергрированное с javascript движком. есть, например, страницы, где форма через javascript-овский document.write выводится на экран только после нажатия кнопки. вот я хочу делать чтото типа document['someButton']->click а после этого заполнять и сабмитить эту форму. с нуля написать такое достаточно сложно и очень много времени займёт.
CS>>>"с нуля написать такое достаточно сложно и очень много времени займёт."
CS>>>А придется. Ибо скрипт знает про объект window . А window собственно и есть browser. CS>>>Т.е. без browser это не работает. Вмуровано это все в GUI — не вырвать.
V>>ну это ясно. думал написать тулкит для мозиллы который бы якобы "выводил на экран", только на самом деле писал куда-то в память. но никаких док по этому поводу нет, а код слабо документирован ( слабо — мягко сказано ). чёрт. последний вариант — взять curl, xercesc, и javascript-движок от мозиллы и попробовать это скрестить.
S1>vladie, у меня сейчас очень похожая задача! Чем кончились твои изыскания?
взял javascript движок от мозиллы и начал писать с нуля.
конечно если не нужно быстродействия/экономии памяти лучше заюзать готовый броузер.
Re[4]: веб-клиент на c/c++ (эмулирующий браузер хотя бы част
От:
Аноним
Дата:
13.12.06 10:15
Оценка:
CS>"с нуля написать такое достаточно сложно и очень много времени займёт."
CS>А придется. Ибо скрипт знает про объект window . А window собственно и есть browser. CS>Т.е. без browser это не работает. Вмуровано это все в GUI — не вырвать.
Блин, вот народ на досуге браузеры пишет ...
Совсем нечем заняться чтоли?
Найдите такой браузер, который позволяет себя запускать несколько раз и при этом эти разные процессы друг с другом не взаимодействуют.
Нет такого?
Поставьте несколько VM и запускайте IE/Mozilla там.
Зайдите несколько раз на себя через ssh+X forwarding/Terminal Services и запускайте IE/Mozilla в разных сессиях.