Использование прокси в GET/POST запросах при отключенном браузере.

  • Автор темы Автор темы dmitya
  • Дата начала Дата начала

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Реакции
78
Баллы
28
Здравствуйте!
Не могу понять, как работает такая конструкция:
1. В настройках проекта - "Не использовать браузер"
2. Сам проект построен на стандартных инструментах (блоки GET и POST-запросов), снипеты НЕ используются.
3. Запросы должны выполняться через прокси
4. Сами прокси живые, берутся из проверенного файла (обновление - через каждые 10 минут), вперемешку элитные HTTPS и SOCKS5 (работа с Твиттером), формат записи: http://proxy:port и socks5://proxy:port
5. Выставляю прокси через блок "Настройки браузера"
6. В блоке GET/POST выставляю "Текущий прокси проекта"

Это "кагбэ" работает, но только через HTTPS и с очень маленьким процентом успеха, а через SOCKS5 сразу отлуп запросов.
В субботу Твиттер чего-то там у себя опять подкрутил, и количество успешных запросов сильно упало.

ВОПРОСЫ:
Это корректно?
Или при отключенном браузере работать не должно в принципе?
Что посоветуете? Сниппеты C#?
Что работает быстрее в C#: нативный метод HttpWebRequest или зеннолабовский HttpGet/HttpPost? (там, где прокси не нужны)

И не по теме (но свербит): А что, текущая версия ZP теперь РЕАЛЬНО работает только в режиме: 1 лицензия - 1 запущенный ZP? (Раньше можно было запустить сразу на 3 машинах)
 
Последнее редактирование:
есть таска уже закрытая по поводу проблем использования прокси из профиля в экшене GET
поправили, новый билд будет на след. неделе.
по идее будет работать, если использовать не прокси профиля, а вручную в экшене прописывать проксю или переменную с проксей.
Но сейчас там нет поля единого, тоже не очень удобно. в следующем билде будет так: http://i.gyazo.com/b16b48fa564d6437f03c4d76a31968a7.png

И не по теме (но свербит): А что, в текущей версии ZP теперь РЕАЛЬНО работает только в режиме 1 лицензия - 1 запущенный ZP? (Раньше можно было запустить сразу на 3 машинах)

FAQ:
Q: Что значит «Количество компьютеров» и чем это отличается от «Одновременно запущенных копий»?
A: Для удобства использования разрешается устанавливать Standard и Professional версии программы на несколько компьютеров, но запускать можно одновременно только на одной машине. Это ограничение не относится к ProjectMaker, вы можете создавать и отлаживать шаблоны хоть на всех машинах одновременно.

Отсюда: http://zennolab.com/ru/buy-it-now/version-comparison/
 
1. Пока ждал, попробовал снипеты C#... ПОНРАВИЛОСЬ! :D Так что прокси в экшене уже не слишком актуально... Хотя, все-равно надо - спасибо!..
2. Открытый вопрос: Что быстрее работает - нативный метод HttpWebRequest или зеннолабовский HttpGet/HttpPost? Или примерно одинаково?
3. Свербит:
Я в курсе, сам был шокирован, когда "фокус удался". Это было "пасхальное яйцо", которое пофиксили?
 
вы просто браузер отключите в настройках проекта. тогда все будет очень быстро. я не думаю что методы различаются на сколь угодно значительное время.

Я в курсе, сам был шокирован, когда "фокус удался". Это было "пасхальное яйцо", которое пофиксили?
Да.
 
Естественно, браузер отключен, ради этого и затевалось...
Все вопросы сняты, спасибо за ответы!
Успехов всем!
 
Новый вопрос: Как передать реферера в HttpGet/HttpPost?
 
Целью форума является не только получение ответа по запросу/ответу, но также и получение ответов по ПОИСКУ!
Я сам много раз хотел СРАЗУ получить нужные ответы на вопросы. Частично это получалось только сканируя несколько разных запросов.
Итак, полное (надеюсь) решение топик-вопроса (спасибо rostonix !!!):
Ставим экшн "C# код" и вписываем туда:
1. GET запрос:
Код:
Развернуть Свернуть Копировать
string url = "http://site.com/"; //или можно передать из проекта - project.Variables["url"].Value;
string proxy = "socks5://123.123.123.123:1234"; //можно из проекта, см. выше, или пустая строка - "";
int timeout = 30000; //таймаут в МИЛЛИсекундах
string cookies = ""; //это пример без куки
string userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"; //юзер-агент - ХРОМ!
string referer = "http://site.com/"; //здесь передаем реферера, аналогично можно забабахать доп. заголовки
string httpResponse = String.Empty; // инициализируем пустой ответ сервера

try {
    httpResponse = ZennoPoster.HttpGet(url, proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
} catch (Exception ex) { return "bad_post"; }
//в этом методе используем проинициализированные выше переменные, а также некоторые статичные входящие (которые в пределах проекта не меняются) - кодовую страницу UTF-8, тип возвращаемых данных (в моем примере - заголовки и тело ответа), наличие и количество переадресаций (true, 5,)

return httpResponse; //возвращаем ответ, не забываем внизу экшна указать переменную для ответа
2. POST запрос:
Код:
Развернуть Свернуть Копировать
string url = "http://site.com/"; //УРЛ запроса
string content = project.Variables["content"].Value; //тело запроса, можно конструировать прямо тут или передавать из проекта
string proxy = project.Variables["proxy"].Value; //тут прокси передаем из проекта
int timeout = 30000; //миллисекунды
string cookies = project.Variables["cookie"].Value; // передаем куки из проекта, но можно БЕЗ куки - см. GET запрос
string userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60";
string referer = project.Variables["challenge_referer"].Value; //реферер
string httpResponse = String.Empty; //инициализируем пустой ответ

try {
    httpResponse = ZennoPoster.HttpPost(url, content, "application/x-www-form-urlencoded", proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent,  true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
} catch (Exception ex) { return "bad_post"; }
//примерно то же, что и в GET запросе только добавляется переменная - тело запроса, и постоянная - форма этого тела - "application/x-www-form-urlencoded", соответственно, тело нужно предварительно закодировать, можно прямо в описании переменной content, а у меня для этого отдельный экшн с JS сценарием (пережиток старого)
return httpResponse;

В общем вот так. Если кому будет полезно, я буду только рад!

Да, вот еще ОЧЕНЬ ВАЖНОЕ замечание!!!
Все напарсенные данные из проекта НЕ ДОЛЖНЫ содержать непечатные символы (\n, \r, \t и так далее).
Обращаю внимание, потому что сам 2,5 суток подряд получал ошибку 400 Bad Request и нифига не мог понять...

Всем успешной работы!
 
Спасибо за полезную информацию для форума ^_^
 
  • Оценить
Реакции: dmitya
Есть ли на C# аналог "использовать прокси проекта"? пробовал instance.GetProxy();, но у меня пустая строка выходит
 
Целью форума является не только получение ответа по запросу/ответу, но также и получение ответов по ПОИСКУ!
Я сам много раз хотел СРАЗУ получить нужные ответы на вопросы. Частично это получалось только сканируя несколько разных запросов.
Итак, полное (надеюсь) решение топик-вопроса (спасибо rostonix !!!):
Ставим экшн "C# код" и вписываем туда:
1. GET запрос:
Код:
Развернуть Свернуть Копировать
string url = "http://site.com/"; //или можно передать из проекта - project.Variables["url"].Value;
string proxy = "socks5://123.123.123.123:1234"; //можно из проекта, см. выше, или пустая строка - "";
int timeout = 30000; //таймаут в МИЛЛИсекундах
string cookies = ""; //это пример без куки
string userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"; //юзер-агент - ХРОМ!
string referer = "http://site.com/"; //здесь передаем реферера, аналогично можно забабахать доп. заголовки
string httpResponse = String.Empty; // инициализируем пустой ответ сервера

try {
    httpResponse = ZennoPoster.HttpGet(url, proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
} catch (Exception ex) { return "bad_post"; }
//в этом методе используем проинициализированные выше переменные, а также некоторые статичные входящие (которые в пределах проекта не меняются) - кодовую страницу UTF-8, тип возвращаемых данных (в моем примере - заголовки и тело ответа), наличие и количество переадресаций (true, 5,)

return httpResponse; //возвращаем ответ, не забываем внизу экшна указать переменную для ответа
2. POST запрос:
Код:
Развернуть Свернуть Копировать
string url = "http://site.com/"; //УРЛ запроса
string content = project.Variables["content"].Value; //тело запроса, можно конструировать прямо тут или передавать из проекта
string proxy = project.Variables["proxy"].Value; //тут прокси передаем из проекта
int timeout = 30000; //миллисекунды
string cookies = project.Variables["cookie"].Value; // передаем куки из проекта, но можно БЕЗ куки - см. GET запрос
string userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60";
string referer = project.Variables["challenge_referer"].Value; //реферер
string httpResponse = String.Empty; //инициализируем пустой ответ

try {
    httpResponse = ZennoPoster.HttpPost(url, content, "application/x-www-form-urlencoded", proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent,  true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
} catch (Exception ex) { return "bad_post"; }
//примерно то же, что и в GET запросе только добавляется переменная - тело запроса, и постоянная - форма этого тела - "application/x-www-form-urlencoded", соответственно, тело нужно предварительно закодировать, можно прямо в описании переменной content, а у меня для этого отдельный экшн с JS сценарием (пережиток старого)
return httpResponse;

В общем вот так. Если кому будет полезно, я буду только рад!

Да, вот еще ОЧЕНЬ ВАЖНОЕ замечание!!!
Все напарсенные данные из проекта НЕ ДОЛЖНЫ содержать непечатные символы (\n, \r, \t и так далее).
Обращаю внимание, потому что сам 2,5 суток подряд получал ошибку 400 Bad Request и нифига не мог понять...

Всем успешной работы!
Даже после использования ваши конструкций пocт запроса, в codeResult (результат выполнения кода) возвращается пустота, не ошибок, ничего, а так же не выполняется сам запрос.
Пробую на разные сайты слать запрос, на некоторые удачно всё, на oднoклaccникax косяк, хотя передаю даже их секретный СSRFTоkеn
Сам запрос подстаиваю почти 1в1, как через сниффер приходит, но ничего не получается.

Пытаюсь отправить пocт запрос в oднoклaccникax

Сижу на демо версии, пытаюсь изучить и понять, стоит ли покупать.
 
Начну с конца: покупать - СТОИТ! Даже не раздумывая. Мощнейший инструмент (в хороших руках).

Теперь по существу: По поводу ОК не скажу, т.к. работаю с твиттером и около него, но у меня така конструкция снипета работает и на других (околотвиттеровских) сайтах - биржах, сервисах и т.п. У меня пустота (в тви) тоже иногда возвращается, но только если работаю через прокси. Означать может только ТРИ варианта:
1. Прокси НЕ подходит.
2. Прокси не пропустил запрос/ответ (бесплатные прокси - они такие, да)
3. Что-то упущено в оформлении запроса (например, твиттер при работе с API требует в доп. ЗАГОЛОВКАХ дополнительно передавать bearer)
(Может, есть еще варианты, но они мне неизвестны)

В первом случае меняем прокси
Во втором - повторяем запрос пока не получим ответ или не случится контролируемый таймаут
В третьем - внимательно читаем мануалы и очень ТЩАТЕЛЬНО отслеживаем ЦЕПОЧКУ ЖИВЫХ запросов (через фиддлер, например), учитываем ВСЁ - и куки и токены и секретные фразы, начиная от САМОГО ПЕРВОГО запроса (который ПЕРЕД авторизацией)

Успехов! Да пребудет с Вами Зенка!
 
Последнее редактирование:
Демо версия очень старая. Мы предоставляем 30и дневный период на возврат средств. Можно купить, потестить месяц и вернуть средства, если софт вам не подойдет.
 
  • Оценить
Реакции: dmitya
Просто хотел бы понять, почему возвращает пустоту, обычно, если косяк - выдаёт либо ошибку, либо html код страницы с ошибкой.
Если всё удачно проходит, то ок либо хедербоди.

Но не выдаёт ничего.

Кстати как можно проснифить запросы демо версии? там только идут постоянные контроли лицензии и ещё чегото, но ни пост ни гет запросы не видит фидлер
 
Фиддлер не видит зенку. Снифать надо ЖИВЫЕ действия в браузере, а потом переносить в Зенку.
 
Фиддлер не видит зенку. Снифать надо ЖИВЫЕ действия в браузере, а потом переносить в Зенку.
Снифаю живые, переношу в зенку и в кубик и в сниппет - ничего не выходит, хотя если в фидлере нажать рипит- действие совершится корректно.

Но вопрос весь - почему ответ не приходит никакой?
 
Но вопрос весь - почему ответ не приходит никакой?
Я уже ответил так-то... ;)
Вспомнил, есть еще четвертая причина - таймаут слишком маленький.
У Вас сколько выставлен?
 
Фиддлер не видит зенку. Снифать надо ЖИВЫЕ действия в браузере, а потом переносить в Зенку.
просто нужно правильно настроить и поставить в PM прокси 127.0.0.1:8888
 
  • Оценить
Реакции: dmitya

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)