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

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 машинах)
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
есть таска уже закрытая по поводу проблем использования прокси из профиля в экшене 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/
 

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
1. Пока ждал, попробовал снипеты C#... ПОНРАВИЛОСЬ! :D Так что прокси в экшене уже не слишком актуально... Хотя, все-равно надо - спасибо!..
2. Открытый вопрос: Что быстрее работает - нативный метод HttpWebRequest или зеннолабовский HttpGet/HttpPost? Или примерно одинаково?
3. Свербит:
Я в курсе, сам был шокирован, когда "фокус удался". Это было "пасхальное яйцо", которое пофиксили?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
вы просто браузер отключите в настройках проекта. тогда все будет очень быстро. я не думаю что методы различаются на сколь угодно значительное время.

Я в курсе, сам был шокирован, когда "фокус удался". Это было "пасхальное яйцо", которое пофиксили?
Да.
 

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
Естественно, браузер отключен, ради этого и затевалось...
Все вопросы сняты, спасибо за ответы!
Успехов всем!
 

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
Новый вопрос: Как передать реферера в HttpGet/HttpPost?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
  • Спасибо
Реакции: dmitya

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
Целью форума является не только получение ответа по запросу/ответу, но также и получение ответов по ПОИСКУ!
Я сам много раз хотел СРАЗУ получить нужные ответы на вопросы. Частично это получалось только сканируя несколько разных запросов.
Итак, полное (надеюсь) решение топик-вопроса (спасибо 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 и нифига не мог понять...

Всем успешной работы!
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Спасибо за полезную информацию для форума ^_^
 
  • Спасибо
Реакции: dmitya

Rafa

Client
Регистрация
21.09.2010
Сообщения
182
Благодарностей
24
Баллы
18
Есть ли на C# аналог "использовать прокси проекта"? пробовал instance.GetProxy();, но у меня пустая строка выходит
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
126
Баллы
43
Целью форума является не только получение ответа по запросу/ответу, но также и получение ответов по ПОИСКУ!
Я сам много раз хотел СРАЗУ получить нужные ответы на вопросы. Частично это получалось только сканируя несколько разных запросов.
Итак, полное (надеюсь) решение топик-вопроса (спасибо 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

Сижу на демо версии, пытаюсь изучить и понять, стоит ли покупать.
 

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
Начну с конца: покупать - СТОИТ! Даже не раздумывая. Мощнейший инструмент (в хороших руках).

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

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

Успехов! Да пребудет с Вами Зенка!
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Демо версия очень старая. Мы предоставляем 30и дневный период на возврат средств. Можно купить, потестить месяц и вернуть средства, если софт вам не подойдет.
 
  • Спасибо
Реакции: dmitya

Rk61

Client
Регистрация
03.02.2015
Сообщения
114
Благодарностей
126
Баллы
43
Просто хотел бы понять, почему возвращает пустоту, обычно, если косяк - выдаёт либо ошибку, либо html код страницы с ошибкой.
Если всё удачно проходит, то ок либо хедербоди.

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

Кстати как можно проснифить запросы демо версии? там только идут постоянные контроли лицензии и ещё чегото, но ни пост ни гет запросы не видит фидлер
 

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
Фиддлер не видит зенку. Снифать надо ЖИВЫЕ действия в браузере, а потом переносить в Зенку.
 

Rk61

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

Но вопрос весь - почему ответ не приходит никакой?
 

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28
Но вопрос весь - почему ответ не приходит никакой?
Я уже ответил так-то... ;-)
Вспомнил, есть еще четвертая причина - таймаут слишком маленький.
У Вас сколько выставлен?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Фиддлер не видит зенку. Снифать надо ЖИВЫЕ действия в браузере, а потом переносить в Зенку.
просто нужно правильно настроить и поставить в PM прокси 127.0.0.1:8888
 
  • Спасибо
Реакции: dmitya

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18

dmitya

Client
Регистрация
10.08.2013
Сообщения
179
Благодарностей
78
Баллы
28

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