Прошу помощи по написанию функции WebRequest

 

Привет, уважаемые разработчики. Есть такая проблема. Писал несколько лет назад советник, который считывает аналитику с сайта телетрейд. Советник работал, но сейчас что-то поменялось на самом сайте и теперь WebRequest при запросе информации возвращает только ошибки (ранее мне эту функцию писали, но сейчас я хочу уже сам разобраться). Где искать все параметры для этой функции - я не знаю. Если я правильно понимаю логику функционирования сайта, получается, что на основе галок в настройках благодаря исполняемому скрипту подгружается та или иная страница, которая имеет конкретный адрес (в зависимости от настроек) и который можно узнать, только копаясь в коде страницы и копированием адресной строки браузера, как я понимаю, не обойтись.

Кроме того, страница, к которой требуется доступ, требует авторизации. Если судить по коду возврата сервера, то ничего не поменялось (как возвращалось значение 200, так и возвращается), но кто его знает, может советник уже и авторизацию не проходит...

Меня интересует страница вот по этому адресу (на случай, если у кого-то тоже есть доступ) - https://my.teletrade-dj.com/analytics

Буду благодарен за ответы, которые помогут мне разобраться в данном вопросе, а то на всех сайтах примеры с уже готовыми данными для функции, а как их получили - непонятно. 

 
Artyom Kuraev:

Привет, уважаемые разработчики. Есть такая проблема. Писал несколько лет назад советник, который считывает аналитику с сайта телетрейд. Советник работал, но сейчас что-то поменялось на самом сайте и теперь WebRequest при запросе информации возвращает только ошибки (ранее мне эту функцию писали, но сейчас я хочу уже сам разобраться). Где искать все параметры для этой функции - я не знаю. Если я правильно понимаю логику функционирования сайта, получается, что на основе галок в настройках благодаря исполняемому скрипту подгружается та или иная страница, которая имеет конкретный адрес (в зависимости от настроек) и который можно узнать, только копаясь в коде страницы и копированием адресной строки браузера, как я понимаю, не обойтись.

Кроме того, страница, к которой требуется доступ, требует авторизации. Если судить по коду возврата сервера, то ничего не поменялось (как возвращалось значение 200, так и возвращается), но кто его знает, может советник уже и авторизацию не проходит...

Меня интересует страница вот по этому адресу (на случай, если у кого-то тоже есть доступ) - https://my.teletrade-dj.com/analytics

Буду благодарен за ответы, которые помогут мне разобраться в данном вопросе, а то на всех сайтах примеры с уже готовыми данными для функции, а как их получили - непонятно. 

Документацию читали?

Поиском пользовались?

 
Artyom Trishkin:

Документацию читали?

Поиском пользовались?

Артем, документация читал, в поиске пробовал найти, но все либо заумно, либо не про то. Справку по функции, естественно, тоже читал. Понимаю, что нужно написать url, но где взять этот url - не понимаю (с простой ссылкой из браузера советник работать не хочет).  Если разберусь с этим  - уже смогу двигаться дальше. В темах, которые я просмотрел, всме работают с готовыми ссылками. Для значения headers везде используются ссвои данные. У меня было прописано - "X-Requested-With: XMLHttpRequest""X-Requested-With: XMLHttpRequest\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0";". Что это за абракадабра - я не понимаю и откуда взялась тоже (в справку носом тыкаюсь, читаю "Заголовки запроса вида "ключ: значение", разделенные переносом строки "\r\n". - что это, откуда брать и как использовать - без понятия). 

Далее для значения data у меня прописано в коде "account_id="+Login+"&account_hash="+MD5(Password)+"&session_type=1&proc=session_int.open" (потом идет перенос посимвольно в массив, это понятно - об этом тоже в справке написано. То, что первоначально идет передача логина и пароля с названием соответствующих полей - тоже я понимаю, а вот proc=session_int.open - непонятно, к чему.

Поэтому я и попросил у добрых людей помочь с поиском инструкций о том, как формируются данные для функции WebRequest.

 
Artyom Kuraev:

Артем, документация читал, в поиске пробовал найти, но все либо заумно, либо не про то. Справку по функции, естественно, тоже читал. Понимаю, что нужно написать url, но где взять этот url - не понимаю (с простой ссылкой из браузера советник работать не хочет).  Если разберусь с этим  - уже смогу двигаться дальше. В темах, которые я просмотрел, всме работают с готовыми ссылками. Для значения headers везде используются ссвои данные. У меня было прописано - "X-Requested-With: XMLHttpRequest""X-Requested-With: XMLHttpRequest\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0";". Что это за абракадабра - я не понимаю и откуда взялась тоже (в справку носом тыкаюсь, читаю "Заголовки запроса вида "ключ: значение", разделенные переносом строки "\r\n". - что это, откуда брать и как использовать - без понятия). 

Далее для значения data у меня прописано в коде "account_id="+Login+"&account_hash="+MD5(Password)+"&session_type=1&proc=session_int.open" (потом идет перенос посимвольно в массив, это понятно - об этом тоже в справке написано. То, что первоначально идет передача логина и пароля с названием соответствующих полей - тоже я понимаю, а вот proc=session_int.open - непонятно, к чему.

Поэтому я и попросил у добрых людей помочь с поиском инструкций о том, как формируются данные для функции WebRequest.

Это заголовки запроса HTTP. Когда броузер (и WebRequest) запрашивает страницу/файл он посылает довольно много заголовков и в ответ получает тоже большую пачку всего, помимо собственно файла.

в Firefox - запустите  инструмент "Сеть" Ctrl-Shift-E или Меню/Веб-разработка-сеть. Откройте нужную вам страницу.
Вы увидите много-много файлов которые броузер загрузил чтобы вывести одну страницу.

Ткнув в нужный вам файл, справа увидите всю требуемую информацию - точный URL, метод, отправленные заголовки, полученные заголовки

 

Можно ли с помощью функции WebRequest() добавлять и удалять строки в файле, расположенном на сайте?

 
Maxim Kuznetsov #:

Это заголовки запроса HTTP. Когда броузер (и WebRequest) запрашивает страницу/файл он посылает довольно много заголовков и в ответ получает тоже большую пачку всего, помимо собственно файла.

в Firefox - запустите  инструмент "Сеть" Ctrl-Shift-E или Меню/Веб-разработка-сеть. Откройте нужную вам страницу.
Вы увидите много-много файлов которые броузер загрузил чтобы вывести одну страницу.

Ткнув в нужный вам файл, справа увидите всю требуемую информацию - точный URL, метод, отправленные заголовки, полученные заголовки

Читаю справку по Webrequest(), и тоже непонятно, что именно передавать в качестве параметра headers.

Хотя ниже в справке есть пример с POST-запросами, но на форуме написали, что теперь из программ MQL авторизоваться нельзя. А пример как раз с авторизацией.

Посмотрел в Firefox через F12 в разделе "Сеть" --> "Заголовки запроса". А что именно передавать как headers , там 9 пунктов? (скрин прикрепляю).

Файлы:
IndexHtml.png  202 kb
 
Vasiliy Pushkaryov #:

Читаю справку по Webrequest(), и тоже непонятно, что именно передавать в качестве параметра headers.

Хотя ниже в справке есть пример с POST-запросами, но на форуме написали, что теперь из программ MQL авторизоваться нельзя. А пример как раз с авторизацией.

Посмотрел в Firefox через F12 в разделе "Сеть" --> "Заголовки запроса". А что именно передавать как headers , там 9 пунктов? (скрин прикрепляю).

В этой статье есть пример:

Веб-проекты (Часть I): Создание веб-приложения в схеме Laravel/Nuxt/MetaTrader 5
Веб-проекты (Часть I): Создание веб-приложения в схеме Laravel/Nuxt/MetaTrader 5
  • www.mql5.com
Разработчики MetaTrader 5 предоставили MQL-сообществу множество технологических решений, что даёт возможность реализовывать сложные программные комплексы, схемы которых могут выходить даже за рамки «песочницы» локального компьютера.
 
Anatoli Kazharski #:

В этой статье есть пример:

Спасибо, попробую разобраться
Причина обращения: