Justique: очевидно, что нет, на то оно и неофициальное закрытое API. Так расковыряйте сами, кто вам не дает? Для этого есть снифферы, им отслеживайте запросы от приложений, и останется только имитировать их (запросы) на PHP. Под виндой Fiddler лучший сниффер.
> Как писать более-менее вменяемый код
"Летела ракета, упала в болото, какая зарплата - такая работа!"
Если заказчик платит столько, чтобы денег хватило на достаточное количество дней, не требует жестких сроков - так и сидите делите код на классы, слои абстракции, модули (библиотеки) и т.д., добавляйте рюшечки, кучу перегрузок для каждой функции, чтобы все было максимально удобно, расширяемо, гибко...
А если сроки жесткие, то и писать код, который быстро пишется и вроде бы работает. Только потом этот код не стоит никому показывать, а то не поймут.
NikHaker: Да просто не предусмотрено такого, чтобы стороннее приложение получало доступ к DOM-модели в браузере. Все заботятся о безопасности, а это была бы просто огромная дыра для разных шпионов, стиллеров и т.д.
Нельзя полноценно взаимодействовать с браузером, у него снаружи нет оболочки (API) для взаимодействия.
Нужно хотя бы взять отдельный браузерный движок и внедрить его в приложение. А здесь уже очевидны преимущества C# над C++.
Вот как это делается на C#: www.codeproject.com/Tips/825526/Csharp-WebBrowser-...
На C++ такое уже, мягко говоря, не сделать в пару кликов.
А ведь и браузерные движки - далеко не оптимальны, они предоставляют взаимодействие не по всем направлениям. Почти 100% рабочий вариант - это работа напрямую с HTTP, где опять же C#, естественно, под виндой удобнее, чем C++.
Вы все хотите оставаться нубом со своими нубскими подходами, не поднимать свою задницу лишний раз, не изучать ничего нового, но в то же время чтобы всё у вас получалось, и в том числе получалось то, за что иным пятизначные суммы платят. А вот не бывает такого.
JRazor: но на пустом месте он не бывает. А еще бот всегда зависит от того сервиса, с которым он работает. Изменят что-то на сервисе - и он поломается, придется чинить. Чем крупнее сервис, тем быстрее портятся боты.
JRazor: так на фрилансе же и продавать. Чо бы не вариант?
Готовая программа - всегда выгоднее для заказчика хотя бы по тому, что не приходится ждать, пока ее напишут, и потому, что то же качество в итоге обходится дешевле.
Мне особая анонимность не нужна, но как реверс-инженер скажу, что, скажем, Skype или Viber (у них свои протоколы) - гораздо сложнее как-либо перехватить, чем SMS или HTTP(S). Естественно, это касается лишь дескопной/мобильной версии Skype. web.skype.com использует обычный HTTP(S).
Валерий Рябошапко: logging - это логирование, судя по названию? А причем здесь логирование? Я про отладку запросов говорю. Fiddler перехватывает все HTTP-запросы, с заголовками и содержимым, и позволяет видеть их в одинаковом формате.
Можно, например, найти приложение-клиент, которое работает с нужным сайтом и у него это получается, перехватить его запросы Fiddlerом, и останется только симитировать их на любом языке, опять же Fiddlerом проверяя соответствие.
Боты для сайтов без открытого API пишут именно так.
И по какой же логике вы хотите ДВУХмерный массив запихать в ОДНУ строку?
В общем случае, алгоритм такой:
1) создаем переменную с пустой строкой
2) во вложенном for проходим по всей "матрице" из векторов
2.1) конкатенируем к нашей строке каждый элемент
3) все, строка готова
tasce: так и я про то же, а Антон Жуков наличие кейворда "var" выставляет как паскале-подобность. К слову, в C# тоже есть var, похожий на тот, что в JS. Но и там и там это совсем не тот var, что в паскале.