Anonymous
Но как?
Snusmumriken
Лучше убери сам намёк на нецензурщину. Звёздочки — плохой способ.
Snusmumriken
Я регулярно вижу вменяемых додиков. Они выдают совершенно нормальные решения, которые чудовищно кошмарны в данном конкретном случае. Просто у них нет данного опыта, а самый простой/очевидный путь оказывается не тем что нужно. И я — один из этих додиков. Поэтому приходится переделывать нафиг, иногда три раза, набираясь опыта : ) А ещё не забывай про необходимость писать кривости по нехватке времени.
Anonymous
Загнул, конечно
Anonymous
Буду распаршивать
Anonymous
Ну в таком случае будет разумным подтолкнуть додика к тому, чтобы он узнал более оптимальный способ
Snusmumriken
Common sense различается даже у двух разных людей. В моём common sense достаточно быть в быту фамильярным, забавным и менторским, но в целой куче случаев я веду себя совершенно "неадекватно", то есть, несоответствующе ситуации, когда начинаю фамильярничать со всякими Сверх Серьёзными Дядьками, им сразу кажется что я сверхненадёжный, и мне лучше не давать вообще никакую работу, выгнать меня нафиг и не платить, соответственно )) Кстати, это часть профдеформации и хикканского образа жизни. С кодингом — что-то похожее.
Anonymous
Это специфика сверх серьезных дядек, возможно
Anonymous
Они как правило - жлобы
Snusmumriken
Они разные, не надо подводить всех под один шаблон.
Anonymous
Хорошо
Anonymous
Просто у них принято с проформой обращаться
Snusmumriken
Вот именно, а мне впадлу напрягаться и менять модель поведения, и вообще начались с этим сложности с год назад.
Anonymous
Я это тоже не понимаю, иногда
Anonymous
Ну вот
Snusmumriken
Ладно, это всё диванная теория. В любом случае, пять лет регулярной практики в какой-то области — обычный срок чтобы стать "более-менее норм", но до "сверхмастерства" осталось ещё где-то столько же.
Snusmumriken
Хехе, а это уже проблемы профуканного времени : )
Snusmumriken
Какое же это извращение, даже if используется. Но зато типа подсветочка при просмотре кода, и обычные файлы/папки в остальных случаях.
Snusmumriken
Можно полазать http://37.204.3.109:8080/drive http://37.204.3.109:8080/drive/server.js
Anatoliy
Ребята подскажите чайнику, учусь в луа работать по http, хочу сделать запрос на сервер получить оттуда данные и присвоить их переменной чтобы потом уже дальше делать с ними что вздумается, все получается кроме как присвоить ответно возвращаемые данные переменной, я их или в выводе Zerobrane могу посмотреть или в файл записать, но чтото не пойму как их переменной присвоить
Anatoliy
Вот такой вот типа код
Anatoliy
https = require("ssl.https") socket = require("socket") file1=io.open("c:\\lua\\request.txt", "w") https = require("ssl.https") r, c, h, s = https.request{ method = "GET", url = "https://....", sink = ltn12.sink.file(file1) } print (r, c, h, s)
Anatoliy
Выводит мне получаемые данные в файл, а print (r, c, h, s) всего лишь выводит инфу о сервере и о том как прошел коннект
Anatoliy
а если sink = ltn12.sink.file(io.stdout) - то выводит на экран
Ж
так укажи local resp ... sink = ltn12.sink.file( resp ) ... resp = table.concat( resp ) и всё
Snusmumriken
https = require("ssl.https") socket = require("socket") file1=io.open("c:\\lua\\request.txt", "w") https = require("ssl.https") r, c, h, s = https.request{ method = "GET", url = "https://....", sink = ltn12.sink.file(file1) } print (r, c, h, s)
Ты посмотри внутрь библиотеки. Там для табличного вызова — одна api, для "обычного" — другая. Чтобы получить тело сообщения в обычном вызове — local body, status, headers = http.request("https://...")
Snusmumriken
А табличный — это если ты делаешь post-запросы со сложносочинёнными телами сообщений, кастомными заголовками/куками или выпендриваешься какими-то другими способами.
Anatoliy
так укажи local resp ... sink = ltn12.sink.file( resp ) ... resp = table.concat( resp ) и всё
Что то он в ответ на такое вообще ничего заполучить не может - https = require("ssl.https") r, c, h, s = https.request{
Anatoliy
print (r, c, h, s) выдают nil unable to open file nil nil
Snusmumriken
Что то он в ответ на такое вообще ничего заполучить не может - https = require("ssl.https") r, c, h, s = https.request{
Ох, кажется тебе ещё надо прочитать лекцию о том, как работает ltn12.
Anatoliy
😁
Snusmumriken
Замени sink на https = require("ssl.https") local body = '' r, c, h, s = https.request{ method = "GET", url = "https://....", sink = function(chunk) body = body .. chunk end }
Snusmumriken
Карочи, интерфейс у хттп-запросов специфичный и требует отдельного изучения. Но заботливый автор оставил способ для тех кому нужно тяп-ляп и в продакшн, его я привёл пятью сообщениями выше. А если уж городишь таблички — значит это тебе зачем-то надо, и изволь понять что тут происходит. Кстати, что за файл file1 ты пихал в sink?
Anatoliy
Замени sink на https = require("ssl.https") local body = '' r, c, h, s = https.request{ method = "GET", url = "https://....", sink = function(chunk) body = body .. chunk end }
нормальды так заработало, долго там читать у диего нехаба как он там все устроил на английском, в чужом коде разбиратся дело нелегкое 😁
Snusmumriken
нормальды так заработало, долго там читать у диего нехаба как он там все устроил на английском, в чужом коде разбиратся дело нелегкое 😁
Что ты тут делаешь, пардон? Изучение любой темы — чтение доков на английском и вкуривание в чужой код.
Anatoliy
Snusmumriken
Читать доки на английском, и вкуривать как Диего Нехаб всё устроил : )
Anatoliy
уже вкурил что надо 😆
Snusmumriken
Sink — это просто функция, которая вызывается каждый раз когда извне приходит кусочек хттп-тушки. Source, соответственно, функция, которая выдаёт интерфейсу кусочек той же самой тушки, а когда перестала выдавать — значит тушка типа закончилась. Фильтры-пайпы — штуки, которые организуют работу первых двух, но они нужны в отдельных случаях, тебе до этого пока далеко.
Snusmumriken
А ведь ты мог бы просто не использовать таблички :<
Snusmumriken
Тут есть и простой интерфейс, который сразу выдаёт тело ответа. И я его уже описал чуть выше. local body, status, headers = http.request("https://...")
Anatoliy
Читать доки на английском, и вкуривать как Диего Нехаб всё устроил : )
А на русском чтото можешь посоветовать почитать по http вообще и по работе с ним в луа в частности?
Snusmumriken
А на русском чтото можешь посоветовать почитать по http вообще и по работе с ним в луа в частности?
На русском — неплохое содержимое википедии. Луа — читай Диего Нехаба на английском, оно несложное.
Snusmumriken
Попробуй написать простой хттп-сервер на чистых сокетах. Ну типа, который возвращает строчку а ля: [[HTTP/1.0 200 OK Content-Length: 7 bla-bla]] Чтобы открываешь такой в браузере localhost:8080, а он тебе такой: bla-bla Я справился с этим на третьем курсе вуза, когда в первый раз засел разбирать всё это дело.
Snusmumriken
С SSL или без?
Мы про SSL говорим или про HTTP?
Snusmumriken
Сначала — понять суть. Фичи-надстройки-свистелки-перделки — потом.
Snusmumriken
Но, кстати, ты можешь написать и с SSL, ибо вроде шареш : )
Snusmumriken
Лично меня, кстати, сильно напрягает обилие шифрований-фигрований без необходимости, всё что пытается выпендриваться чем-то кроме plain-text'а. Ну типа залез ты на сайт с погодой, узнать погоду. Зойчем тебе тут хттпс? Залез ты на википедию, почитать про китайский фаервол и употребление разных веществ внутрь рта. И тут тебе зачем хттпс? В результате, чтобы программно это обрабатывать, приходится морочиться с этим SSL, а ещё поднимать нагрузку на машинку, на мобилах и так можно яичницу жарить, а тут ещё эти со своим TLS/SSL. А ещё, внедряют это дело регулярно совершенно бездумно, так что "реальный хакир" — легко ломанёт всё что захочет.
Snusmumriken
Да, нарядился ты на -40 и всё, твой день испорчен. Жуть, как дальше жить, только на SSL и надежда :<
Anonymous
Дип пакет инспекшн вае равно разберет весь трафик
Anonymous
Правда ведь?
Snusmumriken
Боюсь что не совсем. Он эвристически анализирует, смотрит статистику длины/повторяющихся символов/бла-бла без расшифровываний. Почитай про это. А вот man-in-the-middle вполне себе разберёт весь трафик.
Anonymous
Ну значит уже есть смысл - доклады в цру слать мимо ушей провайдера
Snusmumriken
И кому это надо? Тебе? Тыкни пальцем в человека, который этим реально занимается.
Anonymous
Путин сказал что интернет это инструмент фбр
Snusmumriken
Тэкс, не надо тут про политику.
Anatoliy
Замени sink на https = require("ssl.https") local body = '' r, c, h, s = https.request{ method = "GET", url = "https://....", sink = function(chunk) body = body .. chunk end }
Еще подскажи пожалуйста, в http/https реквестах как правильно прокси указать? Если IP адрес и порт, пишу proxy="111.111.111.111:1111" (ну цифры конечно другие) в ответ - proxy not supported
Snusmumriken
Еще подскажи пожалуйста, в http/https реквестах как правильно прокси указать? Если IP адрес и порт, пишу proxy="111.111.111.111:1111" (ну цифры конечно другие) в ответ - proxy not supported
Опа, ты начинаешь подступать к кое-чему интересному. Заранее предупреждаю, что чтобы добиться нормальных проксей у ssl.https, тебе надо или переделывать модуль, или пихать заголовки руками, разрабам ssl было лень : )
Snusmumriken
Ну как правило, подключаешься к проксе по http и говоришь ей выдать тебе содержимое страницы с https. Если соединение с самой проксёй по https — соответственно, коннектишься по https.
Snusmumriken
Но ты приступил к весёлой части. Тебе придётся прочитать побольше информации по заголовкам : )
Snusmumriken
Прости за нескромный вопрос. А зачем тебе вообще это всё? Собрался скрапить сайты без ведома владельцев?
Anatoliy
Ну как правило, подключаешься к проксе по http и говоришь ей выдать тебе содержимое страницы с https. Если соединение с самой проксёй по https — соответственно, коннектишься по https.
"Прости за нескромный вопрос. А зачем тебе вообще это всё? " - надо с телеграм ботом общение наладить через скрипт, но неконнектится к api.telegram.org, похоже изза блокировок
Snusmumriken
А, ну тогда похоже на то. Самый простой способ — организовать нормальный VPN отдельной софтиной. Мои боты таки тоже через проксю общаются, но там не совсем socket/ssl, а дёрганье за уши вендового осла.
Snusmumriken
Ах да, ещё можно арендовать сервер у амазона, и развернуть там : )
Anatoliy
А, ну тогда похоже на то. Самый простой способ — организовать нормальный VPN отдельной софтиной. Мои боты таки тоже через проксю общаются, но там не совсем socket/ssl, а дёрганье за уши вендового осла.
Таких способов масса, я AdvOR запустил вот тебе и VPN, надо только указывать коннект к нему как к прокси 127.0.0.1:9050 и все дела, через него все работает всегда любой обход
Snusmumriken
Ну фактически ты к нему и коннектишься, но передаёшь прокси-заголовки, куда тебе на самом деле надо.
Anatoliy
Ну фактически ты к нему и коннектишься, но передаёшь прокси-заголовки, куда тебе на самом деле надо.
Можно указать конечно чтобы advor перехватывал трафик от скрипта принудительно, можно для этого даже proxifier поставить но все это как то не всегда надежно, может чтото из этого отвалится иногда, лучше бы чтобы сам скрипт как то к прокси коннектился, а вот теперь пробую - http://api.telegram.org так выскакивает C:\ZeroBraneStudio\bin\lua53.exe: C:\ZeroBraneStudio\lualibs/socket\http.lua:117: bad argument #1 to 'connect' (string expected, got nil), наверно не будет к телеграмму по http коннектится
Snusmumriken
Нет, эта ошибка означает кое-что другое, прочитай её внимательно.
Anatoliy
ну - неправильный аргумент для коннекта, урл вроде правильный, в чем еще дело?
Snusmumriken
Нет. Ещё внимательнее.
Snusmumriken
Твоя внимательность — 2 из 5. Надо хотя бы 3.5 из 5.