Russian Qt Forum
Ноябрь 26, 2024, 08:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Работа с сайтом.  (Прочитано 9396 раз)
Pixel
Гость
« : Июнь 02, 2013, 18:09 »

Начинаю писать приложение для работы с сайтом, но нигде не могу найти нормальных пояснений. пока только смог получить код страницы, а вот как сделать чтобы программа могла нажимать кнопки, авторизовываться на сайте, забивать текстовые поля? нагуглил множество подобных тем, но везде слишком сложно, а мне бы самые основы. Как-то надо оперировать GET и POST запросами через QNetworkAccessManager или есть какой-то другой способ? можно статейку где подробно объясняется как это делать или примерчик? заранее спасибо!
Записан
thechicho
Гость
« Ответ #1 : Июнь 02, 2013, 18:22 »

нажимать кнопки и заполнять поля можно QtWebKit‎ с помощью javascript. но он работает только в главном потоке.
либо работать гет и пост-запросам, тогда возможна многопоточная работа c обработкой необходимого javascript с помощью QtScript‎.
все сложно, да.
Записан
Pixel
Гость
« Ответ #2 : Июнь 02, 2013, 19:35 »

Цитировать
либо работать гет и пост-запросам, тогда возможна многопоточная работа c обработкой необходимого javascript с помощью QtScript‎.
по подробней можно?
Записан
thechicho
Гость
« Ответ #3 : Июнь 02, 2013, 19:46 »

поиск юзай
http://www.prog.org.ru/topic_24772_0.html
Записан
Pixel
Гость
« Ответ #4 : Июнь 02, 2013, 20:36 »

Цитировать
Собственно по сабжу, цель - залить файл, который лежит на ПК на сервер imagehack.us
они предоставляют API:
Код:
Endpoint : https://post.imageshack.us/upload_api.php
Parameters :
* key : The api key for your application; found in email sent after filling out our API Key Request form
* fileupload : image file
* format : json
tags : a CSV list of tags to describe your picture
public : A string setting your image to public or private where "yes" is public and "no" is private. Images are public by default.

а если мне неизвестен API, как быть?
Записан
thechicho
Гость
« Ответ #5 : Июнь 02, 2013, 21:30 »

воспользоваться поиском
Записан
Pixel
Гость
« Ответ #6 : Июнь 02, 2013, 21:40 »

хорошо, зайдем с другого бока. Можно пожалуйста небольшой примерчик как авторизоваться вот на этом сайте http://chemogu.ru/ ?
Записан
mutineer
Гость
« Ответ #7 : Июнь 03, 2013, 10:07 »

Посмотреть через средства отладки браузера какой запрос отсылается по кнопке "Войти", повторить этот запрос через QNetworkAccessManager, сохранить полученные куки и использовать их при последующих запросах. Например так
Записан
Pixel
Гость
« Ответ #8 : Июнь 03, 2013, 23:02 »

открываю средства отладки, жму вход, вижу вот такую картину http://screenshot.su/show.php?img=b93eef681db98d8832e669422633ba37.jpg и еще в 3 раза больше в полосе прокрутки. Должен быть метод POST, но его там вовсе нет.
как найти какой запрос отвечает за кнопку? как сохранить полученные куки? как использовать куки?
P.S. извиняюсь за глупость, если не сложно дайте хотя бы ссылку на статью где можно прочитать про это? я ведь совершенно не понимаю ваших ответов.
« Последнее редактирование: Июнь 04, 2013, 00:34 от Pixel » Записан
mutineer
Гость
« Ответ #9 : Июнь 04, 2013, 10:12 »

Там не обязательно должен быть метод POST. Посмотри код страницы, что именно происходит при нажатии кнопки "Вход". Для куков есть класс QNetworkCookie и QNetworkCookieJar. Конкретных статей не знаю
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #10 : Июнь 04, 2013, 10:21 »

открываю средства отладки, жму вход, вижу вот такую картину

ЧЯДНТ  Строит глазки

P.S. пару ссылок http://qt-project.org/doc/qt-5.0/qtdoc/topics-network-connectivity.html
                         http://ru.wikipedia.org/wiki/HTTP
« Последнее редактирование: Июнь 04, 2013, 10:33 от alex312 » Записан
thechicho
Гость
« Ответ #11 : Июнь 04, 2013, 11:08 »

https://addons.mozilla.org/ru/firefox/addon/httpfox/
Записан
Pixel
Гость
« Ответ #12 : Июнь 05, 2013, 23:12 »

Большое спасибо за ссылки, почитал. Вроде механику понял. Нашел схожее расширение для chrome, тыкнул логин. Имеем 2 запроса POST.
Первый: http://screenshot.su/show.php?img=997004f08ba7b58ef475295e7e7ee582.jpg
Второй: http://screenshot.su/show.php?img=defa6591b63a6de00b81235bfd13521a.jpg
Затрудняюсь теперь с реализацией (все перепробовал, ничего не получилось). Что и как мне нужно повторить? Оба запроса или только один?
Конструкция должна выглядеть как то так, верно?:
Код:
QNetworkRequest request(QUrl("http://chemogu.ru/login/ajax-login/"));
request.setRawHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
request.setRawHeader("Accept", "application/json, text/javascript, */*; q=0.01");
request.setRawHeader("X-Requested-With", "XMLHttpRequest");
m_NAM.post(request, "login=******&password=******&remember=on&return-path=http%3A%2F%2Fchemogu.ru%2F&security_ls_key=f197d25d6a04db642aa23dfd7b14861f");
На такой запрос сервер присылает: "Hacking attemp!".
Графы "Name", "Value" задавать с помощью m_NAM.setProperty()? Если да, то видимо мой код неверен, но что тогда писать в "name" второго запроса и какой будет второй аргумент метода POST?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #13 : Июнь 06, 2013, 01:46 »

Pixel, посмотри на заголовок запроса на моем скриншоте, там перелается 12 параметров, куки, и собственно сам запрос.
Если ты думаеш отделатся тремя, то ты сильно ошибся.
Еще, в запросе передается security_ls_key - ты откуда его береш? Опять же, если ты его один раз выцепил браузером, и думаеш все время использовать, то ты сильно ошибся.

Ну и так, ради интереса, чем тебя не устроили стандартные хромовские расширения для разработчика ?
« Последнее редактирование: Июнь 06, 2013, 01:51 от alex312 » Записан
thechicho
Гость
« Ответ #14 : Июнь 06, 2013, 10:30 »

спарси из формы значение security_ls_key
<input type="hidden" name="security_ls_key" value=""... />
тебе нужно значение value=""
кот. будешь подставлять сюда security_ls_key=

и куки нужны, наверн, будут

Код:
QNetworkAccessManager qnam;
QNetworkCookieJar *cookieJar = new QNetworkCookieJar;
qnam.setCookieJar(cookieJar);
« Последнее редактирование: Июнь 06, 2013, 10:39 от thechicho » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.