
RigoSex
07.02.2019
01:08:48
Может надо делать через прокси? Что за прокси я не вкурил, но видел упоминания о нем регулярно на стаке

Tishka17
07.02.2019
01:08:55
Ух жесть
Сочувствую

RigoSex
07.02.2019
01:09:28
Ради работы мечты и море по колено

Google

RigoSex
07.02.2019
01:10:03
Ещё был вариант делать дамп консоли, но эта хуйня работает вроде только в фаербаге через драйвер фаерфокса
Который у меня вроде не работал нихрена
Похоже последняя версия селениума сломала поддержку фаерфокса
Все ещё не сдался, но хочу умереть
Надежда ещё есть - ручная вставка в консоль скрипта работает очень хорошо
После ручной инъекции все равно виснет спустя время
Непонятно...
Есть ещё вариант с локальным прокси
https://github.com/lightbody/browsermob-proxy
Есть такая борода для джавы, нужна такая же для питона...

Maxim robox
07.02.2019
02:28:17


RigoSex
07.02.2019
02:28:45
driver.execute_script("""
(function(XHR) {
"use strict";
var element = document.createElement('div');
element.id = "interceptedResponse";
element.appendChild(document.createTextNode(""));
document.body.appendChild(element);
var open = XHR.prototype.open;
var send = XHR.prototype.send;
XHR.prototype.open = function(method, url, async, user, pass) {
this._url = url; // want to track the url requested
open.call(this, method, url, async, user, pass);
};
XHR.prototype.send = function(data) {
var self = this;
var oldOnReadyStateChange;
var url = this._url;
function onReadyStateChange() {
if(self.status === 200 && self.readyState == 4 /* complete */) {
document.getElementById("interceptedResponse").innerHTML +=
'{"data":' + self.responseText + '}*****';
}
if(oldOnReadyStateChange) {
oldOnReadyStateChange();
}
}
if(this.addEventListener) {
this.addEventListener("readystatechange", onReadyStateChange,
false);
} else {
oldOnReadyStateChange = this.onreadystatechange;
this.onreadystatechange = onReadyStateChange;
}
send.call(this, data);
}
})(XMLHttpRequest);


Maxim robox
07.02.2019
02:31:36
driver.execute_script("""
(function(XHR) {
"use strict";
var element = document.createElement('div');
element.id = "interceptedResponse";
element.appendChild(document.createTextNode(""));
document.body.appendChild(element);
var open = XHR.prototype.open;
var send = XHR.prototype.send;
XHR.prototype.open = function(method, url, async, user, pass) {
this._url = url; // want to track the url requested
open.call(this, method, url, async, user, pass);
};
XHR.prototype.send = function(data) {
var self = this;
var oldOnReadyStateChange;
var url = this._url;
function onReadyStateChange() {
if(self.status === 200 && self.readyState == 4 /* complete */) {
document.getElementById("interceptedResponse").innerHTML +=
'{"data":' + self.responseText + '}*****';
}
if(oldOnReadyStateChange) {
oldOnReadyStateChange();
}
}
if(this.addEventListener) {
this.addEventListener("readystatechange", onReadyStateChange,
false);
} else {
oldOnReadyStateChange = this.onreadystatechange;
this.onreadystatechange = onReadyStateChange;
}
send.call(this, data);
}
})(XMLHttpRequest);
Нужно перехватывать ответы на запросы?


RigoSex
07.02.2019
02:31:42
Да

Google

RigoSex
07.02.2019
02:31:50
Селениум такие вещи не умеет

Maxim robox
07.02.2019
02:32:26
Да
Именно на клиенте нужно перехватывать что ли? Или не важно?

Tishka17
07.02.2019
02:32:45
Если перехватывать, можно взять QtWebkit, там есть метод для этого
А так, лучше прокси конечно

Maxim robox
07.02.2019
02:33:36

RigoSex
07.02.2019
02:33:55
Но нужно уместить в один скрипт питона, так то можно и через апишку
Но не надо

Tishka17
07.02.2019
02:34:14

RigoSex
07.02.2019
02:34:40
В задании сказано скрипт сделать, а не поднимать виртуальные интерфейсы
Я не хочу усложнять парсинг настолько

Maxim robox
07.02.2019
02:35:05
Да задачка-то ебаная какая-то.

RigoSex
07.02.2019
02:35:10
Скрипт выше работает, но немного некорректно т.к. страница подвисает спустя время

Maxim robox
07.02.2019
02:35:50

RigoSex
07.02.2019
02:35:57
Первое

Maxim robox
07.02.2019
02:38:22
Первое
https://stackoverflow.com/questions/16959359/intercept-xmlhttprequest-and-modify-responsetext
Пробовал?

Egor
07.02.2019
02:39:42
ОФФТОП: кто скажет,есть ли какой сервис подобие смспилота, НО для получения смс и чтения его? Если он с API (для пересылки на ТГ итд) было бы отлично

RigoSex
07.02.2019
02:40:21

Maxim robox
07.02.2019
02:40:31
Вроде он умеет.
Будь аккуратен, регая телегу на такой номер, можно бан словить.

Google

Egor
07.02.2019
02:41:45
вроде как я видел либы на питоне, которые умеют работать с юсб-модемами ..с возможностью чтения и отправки смс

Maxim robox
07.02.2019
02:42:44

Egor
07.02.2019
02:43:11

Maxim robox
07.02.2019
02:44:29

RigoSex
07.02.2019
02:44:46
Данных там было не настолько много чтобы все висло к чертям

Maxim robox
07.02.2019
02:46:34
свое или готовое? если да, то можно линк?
Есть софт для автоматизации на андроиде. У меня платный tasker, есть бесплатный automate и куча других.
Суть одна — создать задачу, которая слушает события входящих смсок (и пропущенных звонков у меня еще там же), хуйнуть post запрос в bot api телеграмма.
Для таскера могу скинуть свое. Еще для automate то же самое делал, но не осталось.

RigoSex
07.02.2019
02:48:19
А когда я крутил лог консоли к хрому, он был пустой
Схожу погуглю...

Maxim robox
07.02.2019
02:49:35

RigoSex
07.02.2019
02:49:58
?

Maxim robox
07.02.2019
02:51:07
Там говорится, что у тебя XHR синхронные получаются. Они блокируют поток и это херово сказывается на пользовательском опыте. Но это не ошибка. Это deprecation warning. Не из-за этого падает, я полагаю.

RigoSex
07.02.2019
02:51:16
Падажжи, ведь если делать вывод консоли - нужно ведь ещё и скрипты написать чтобы делали вывод?

Maxim robox
07.02.2019
02:51:36

RigoSex
07.02.2019
02:51:50
Сейчас прикручу и посмотрим
https://stackoverflow.com/questions/20907180/getting-console-log-output-from-chrome-with-selenium-python-api-bindings

Egor
07.02.2019
02:53:22
Спасибо, посмотрю

RigoSex
07.02.2019
02:59:11

Google

RigoSex
07.02.2019
02:59:35
Ещё есть целый файл в папке, debug.log
Но там вообще ерунда какая то
Настройка логирования стоит на ALL

Maxim robox
07.02.2019
03:06:32
Но это же то, что нужно, верно? Сделай там что-нибудь типа console.log(“hui”, data), чтобы знать, что это твое.

RigoSex
07.02.2019
03:07:18
Это вообще не то, нам нужны ответы на пост запросы в виде джсонов, я их могу пощупать из браузера
Но беда что там так насрано, что нельзя смоделировать такой запрос чтобы получить этот самый джсон
Поэтому только перехватывать

Maxim robox
07.02.2019
03:08:03
А. Сперва показалось, что там ответ.

RigoSex
07.02.2019
03:08:27
Да, вижу

Maxim robox
07.02.2019
03:08:41
Если видишь, то неправильно читаешь консоль.

RigoSex
07.02.2019
03:09:14
Не прямо в консоли, а в вкладке - network
Там все запросы и этот тоже есть

Maxim robox
07.02.2019
03:09:29
Ты же console.log делал

RigoSex
07.02.2019
03:10:01
Я делал несколько иное
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }

Maxim robox
07.02.2019
03:10:36
Я селениум не трогал, мне это мало о чем говорит.

RigoSex
07.02.2019
03:11:03
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
driver = webdriver.Chrome(desired_capabilities=d)
# load some site
driver.get('http://foo.com')
# print messages
for entry in driver.get_log('browser'):
print entry
Я ж только через него и могу

Maxim robox
07.02.2019
03:11:38

Google

RigoSex
07.02.2019
03:11:47
Верно и она обычно пустовата
Я думаю если читать консоль - нужно запиндюрить JS который в неё будет скидывать те самые запросы

Maxim robox
07.02.2019
03:12:14

RigoSex
07.02.2019
03:12:24
Вот я об этом пол-часа назад и написал

Maxim robox
07.02.2019
03:12:44

RigoSex
07.02.2019
03:12:55
Прям в консоль?

Maxim robox
07.02.2019
03:13:11
В код, где ты получаешь response

RigoSex
07.02.2019
03:13:48
А теперь я запутался

Maxim robox
07.02.2019
03:15:49
А теперь я запутался
У тебя есть код на жс, который модифицирует прототип xhr, перехватывает ответ на запрос и вставляет его в DOM. И он работает, хоть и зависает. Верно?
Выкидывай тот кусок, где ответ вставляется в DOM, и замени его на вставку в консоль. console.log(response.body) примерно.

RigoSex
07.02.2019
03:16:05
окей, сейчас сделаем

⇒? ? ? ? ? ? ⇐
07.02.2019
03:51:01
Я кстати написал прогу, для управления telegram ботми своим компьютером. Могу скинуть.

Maxim robox
07.02.2019
04:00:54

RigoSex
07.02.2019
04:03:06
Как успехи?
С JS никак, пока борю баги в селениуме и пытаюсь завести его на фаерфоксе
Впихнул вывод в консоль - работает, но виснет моментально

Tishka17
07.02.2019
04:10:17

Maxim robox
07.02.2019
04:10:57


Python
07.02.2019
04:48:16
Правила чата:
1. Пишите вопрос по своей проблеме сразу же первым сообщением. Без приветов. Без прелюдий «кто может помочь». Обращения в ЛС к участникам нежелательны. Смотрите также http://neprivet.ru и http://nometa.xyz
2. Укладывайте свои мысли в одно сообщение, а не десять.
3. Код обрамлять тройным грависом: ```код``` если больше десяти строк, залить на https://gist.github.com или https://dpaste.de
4. На сообщения отвечайте реплаем, а не форвардом.
5. Для вопросов совсем начального уровня писать в @ru_python_beginners. Там же ответы на вопросы: «я новичок, с чего начать изучать питон» и «что почитать».
6. Для HR: сразу указывайте стек технологий проекта и зарплатную вилку. Обязательны хештеги:
#работа
#удаленка или #офис
Просто ссылка на страницу с вакансией не приветствуется. Вакансии, не отвечающие требованиям, будут удалены.
7. Сразу бан за: спам, трояны, взломы, вирусы, спам-боты, кряки, ключи, наркотики и прочий скам или предложения работы в этой сфере.
8. Персонажам с неприличными аватарками и никнеймами будет выдано RO до момента исправления проблемы. Неприемлемы оскорбления, реклама, украшательства, Z̩ͭ͢A̲ͯ̋ͤ̈̅̍L̘̭̦̗͖̍͠G̻̲̮͔̓ͭ̽ͪ͛͘Ọ̲̖͍͔̥͎̄!̝̥̪̘̮̎̂̓ͭ́̃, злоупотребление эмодзи. Список неполный.
Примеры:
? ꧁꧂BAKLAZHANCHIK꧁꧂ ? Baklazhanchik
? Свастика на аватарке ? Котик на аватарке
? ⇒ ? ? ? ? ? ? ? ⇐ ? Agawon


SetazeR
07.02.2019
04:48:33