прокси

Тема в разделе "Предложения по улучшению программы", создана пользователем vogman, сен 15, 2016.

  1. vogman

    vogman New Member

    Регистрация:
    дек 15, 2015
    Сообщения:
    10
    Симпатии:
    0
    Думаю эта проблема знакома многим если в программе использовать прокси и в прекрасный момент выполнения проекта прокси дохнет то прога встает колом с вывеской таймаута предлагаю сделать опцию для проксей к примеру если прокси не отвечает в течении 15-25 сек то использовать следующий их списка как то так .
     
  2. seedgg

    seedgg New Member

    Регистрация:
    апр 2, 2016
    Сообщения:
    22
    Симпатии:
    0
    Для этого на каждом новом этапе выполнения проекта, загрузки определенного действия, страницы(для примера - нажатия "далее") - нужно выставлять элемент "Ожидание" 15-25сек, в котором будет искаться загрузка определенного элемента(ов) на странице. Если условие сработало, то программа будет выполнять проект дальше, а если нет - смена прокси. Так как прокси могут вылететь в любой момент, так что таких проверок должно быть много, и условий тоже. Это все нужно для автономной работы проекта, а не сидеть и перезапускать программу через каждые 5 минут.
    И если работать с проксями, то нужно их очень тщательно отбирать под каждый ресурс, проверять их скорость и отклик(время ожидания). Не просто проверять на работоспособность, а конкретно под каждый ресурс, загрузился ли сайт через прокси(поиск определенного кода станицы).
    Так как прокси могут быть разными, и через медленные с большим откликом, может загрузится всего лиш часть страницы и проект стопорнется.
    Все это реализируется с помощью Ботзилы
     
  3. vogman

    vogman New Member

    Регистрация:
    дек 15, 2015
    Сообщения:
    10
    Симпатии:
    0
    Амм можно реализацию как это выглядит на картинке
     
  4. seedgg

    seedgg New Member

    Регистрация:
    апр 2, 2016
    Сообщения:
    22
    Симпатии:
    0
    Ну картинка ничего не даст для понятия...если есть хоть минимальные понятия в алгоритмизации и программировании, то составить простой алгоритм не составит труда. просто нужно немного посидеть с документацией ботзилы.
    Для примера скину блок ожидания и условия срабатывания:
    <ожидание время="20" id="15" is_last="false" is_start="false" badArrow="" arrow="50">
    <условие>
    <xpath>//script[@id='kortex']</xpath>
    <выражение>{*флагЗагрузки*}=1</выражение>
    </условие>
    </ожидание>
    <если если="{*флагЗагрузки*}==0" id="16" is_last="false" is_start="false" badArrow="" arrow="54">
    <выражение значение="{*СчетчикПрокси*}={*СчетчикПрокси*}+1" id="17" is_last="false" is_start="true" badArrow="" arrow="55" /> (Увеличиваем счетчик прокси)
    <если если="{*СчетчикПрокси*}&gt;={*количествоПрокси*}" id="20" is_last="false" is_start="false" badArrow="" arrow="48"> (проверка, если прокси не подошли к последнему прокси)
    <выражение значение="{*СчетчикПрокси*}=0" id="21" is_last="false" is_start="false" badArrow="" arrow="49" /> (если подошло к последнему, то ставим номер прокси - 0, чтобы они начали перебор с 1-го, если этого не сделать, то счетчик будет плюсоватся, а если он будет выходить за пределы количества, то будет использоваться постоянно последний, и это скорее всего приведет к бану на ресурсе)
    </если>
    <перейтикid id_="9" условие="" id="22" is_last="false" is_start="false" badArrow="" arrow="56" /> (переход на начало исполнения, если дохлый прокси)
    </если>
    Все реализовывать нужно с помощью переменных, и оператора - перейти к айди. Так как оператором Перебор - ничего не получится.
    Переменные типа:
    {*количествоПрокси*}={*прокси*}.Количество. Файл с прокси(тоесть, переменная "прокси") - C:\Program Files (x86)\BotZilla\прокси (или там где установили программу)
     
  5. vogman

    vogman New Member

    Регистрация:
    дек 15, 2015
    Сообщения:
    10
    Симпатии:
    0
    не много не понимаю как реализовать вот к примеру у меня так

    <рандом переменная="задержка" мин="3" макс="10" id="1" is_last="false" is_start="true" badArrow="" arrow="7" />
    <рандом переменная="ожидание" мин="60" макс="120" id="2" is_last="false" is_start="false" badArrow="" arrow="8" />
    <рандом переменная="прокси" мин="0" макс="129" id="3" is_last="true" is_start="false" badArrow="" />
    <перебор путь="{*запрос*}" переменная="запрос строка" id="4" is_last="true" is_start="false" badArrow="">
    <прокси индекс="{*прокси*}" id="5" is_last="true" is_start="false" badArrow="" />
    <УдалитьКуки id="6" is_last="false" is_start="false" badArrow="" arrow="3" />
    <Delay delay="{*задержка*}" мс="" id="7" is_last="false" is_start="true" badArrow="" arrow="10" />
    <GoToUrl url="{*запрос строка*}" реферер="" режим="0" id="8" is_last="false" is_start="true" badArrow="" arrow="2" />
    <Delay delay="{*задержка*}" мс="" id="9" is_last="false" is_start="false" badArrow="" arrow="11" />
    <если если="ЭлементНесуществует('//div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/a[1]/img[1]')" id="10" is_last="false" is_start="false" badArrow="" arrow="8">
    <перейтикid id_="1" условие="" id="11" is_last="false" is_start="false" badArrow="" arrow="9" />
    </если>
    <Click text="" id="12" is_last="false" is_start="false" badArrow="" arrow="4">
    <DomMouseEvent type="mousedown" text="" xpath="//div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/a[1]/img[1]" элемент="" />
    <DomMouseEvent type="mouseup" text="" xpath="//div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/a[1]/img[1]" элемент="" />
    <DomMouseEvent type="click" text="" xpath="//div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/a[1]/img[1]" элемент="" />
    </Click>
    <Delay delay="{*ожидание*}" мс="" id="13" is_last="false" is_start="false" badArrow="" arrow="9" />
    <закрытьвкладку id="14" is_last="false" is_start="false" badArrow="" arrow="12" />
    </перебор

    т.е прокси берется рандомно из генерации числа я не
    могу понять как использовать твою схему что бы срабатывала замена прокси при его неработоспособности
     
  6. seedgg

    seedgg New Member

    Регистрация:
    апр 2, 2016
    Сообщения:
    22
    Симпатии:
    0
    Скину простой мини проект, для того, чтобы было понятно как работать с прокси, все что красным текстом написано нужно будет удалить. Просто создай тестовый проект и вставь....это просто мини блок, чтобы можно было понять как с проксями работать. Там есть куча ненужных переменных, это я просто с проэкта взял, не удалял....но суть будет понятна. После каждого нормального прокси будет сообщение, нормальный он или нет.

    <project project_name="test" project_id="4299">
    <описание текст="" />
    <отредактировано дата="2016-10-02 00:55:07" />
    <владелец имя="yourname" />
    <переменные>
    <переменная тип="2" имя="login" значение="" />
    <переменная тип="1" имя="mail" значение="" />
    <переменная тип="1" имя="password" значение="" />
    <переменная тип="1" имя="user" значение="" />
    <переменная тип="1" имя="buferlogin" значение="" />
    <переменная тип="0" имя="year" значение="" />
    <переменная тип="2" имя="good" значение="" />
    <переменная тип="2" имя="bad" значение="" />
    <переменная тип="0" имя="СчетчикПрокси" значение="0" />
    <переменная тип="0" имя="флагЗагрузки" значение="0" />
    <переменная тип="0" имя="random" значение="" />
    <переменная тип="0" имя="счетчикЮзерагента" значение="0" />
    <переменная тип="2" имя="юзерагент" значение="" />
    <переменная тип="1" имя="буферЮзерагент" значение="" />
    <переменная тип="0" имя="счетчикЛогин" значение="0" />
    <переменная тип="0" имя="goodbad" значение="0" />
    <переменная тип="0" имя="количествоЛогинов" значение="" />
    <переменная тип="2" имя="прокси" значение="" />
    <переменная тип="0" имя="количествоПрокси" значение="" />
    <переменная тип="1" имя="айпиПрокси" значение="" />
    <переменная тип="0" имя="флагЗагрузки2" значение="0" />
    <переменная тип="1" имя="buferlogin2" значение="" />
    <переменная тип="1" имя="текстСообщения" значение="" />
    <переменная тип="0" имя="счетчикСообщений" значение="0" />
    <переменная тип="0" имя="количествоСообщений" значение="" />
    <переменная тип="2" имя="сообщения" значение="" />
    <переменная тип="0" имя="флагЗагрузки3" значение="0" />
    <переменная тип="0" имя="флагЗагрузки4" значение="0" />
    </переменные>
    <settings />
    <events>
    <интерфейс id="1" is_last="false" is_start="true" badArrow="" arrow="2" тип="пользовательский">
    <переменная тип="2" имя="прокси" значение="C:\Program Files (x86)\BotZilla\прокси" /> (это у нас нужно для того, чтобы можно было определить количество прокси, которые мы загрузили....указан путь к файлу....он в корене с установленой программой....чтобы в условиях не менять постоянно количество загруженых)
    </интерфейс>
    <выражение значение="{*количествоПрокси*}={*прокси*}.Количество" id="2" is_last="false" is_start="false" badArrow="" arrow="53" />
    <прокси индекс="{*СчетчикПрокси*}" id="3" is_last="false" is_start="true" badArrow="" arrow="46" />
    <УдалитьКуки id="4" is_last="false" is_start="false" badArrow="" arrow="3" />
    <GoToUrl url="http://www.bing.com/" реферер="" режим="1" id="5" is_last="false" is_start="true" badArrow="" arrow="12" />
    <ожидание время="10" id="6" is_last="false" is_start="false" badArrow="" arrow="50">
    <условие>
    <xpath>//input[@id='sb_form_go']</xpath>
    <выражение>{*флагЗагрузки*}=1</выражение>
    </условие>
    </ожидание>
    <если если="{*флагЗагрузки*}==0" id="7" is_last="false" is_start="false" badArrow="" arrow="54"> (условие, если плохой прокси)
    <выражение значение="{*СчетчикПрокси*}={*СчетчикПрокси*}+1" id="8" is_last="false" is_start="true" badArrow="" arrow="55" />
    <сообщение тело="Плохой прокси" id="9" is_last="false" is_start="true" badArrow="" arrow="103" />
    <закрытьвкладку id="10" is_last="false" is_start="false" badArrow="" arrow="67" />
    <добавитьвкладку url="about:blank" id="11" is_last="false" is_start="false" badArrow="" arrow="68" /> (закрываем и добавляэм вкладку для того, что иногда есть глюки, где оно кэшируется... это позволяет все убрать)
    <если если="{*СчетчикПрокси*}&gt;={*количествоПрокси*}" id="12" is_last="false" is_start="false" badArrow="" arrow="48">
    <выражение значение="{*СчетчикПрокси*}=0" id="13" is_last="false" is_start="false" badArrow="" arrow="49" />
    </если>
    <перейтикid id_="3" условие="" id="14" is_last="false" is_start="false" badArrow="" arrow="56" />
    </если>
    <сообщение тело="хороший прокси" id="15" is_last="true" is_start="false" badArrow="" /> (идет дальнейшее выполнение программы, так как негативное условие не сработало....и прокси нормальный)
    <Click text="" id="16" is_last="false" is_start="false" badArrow="" arrow="17">
    <DomMouseEvent text="" type="mousedown" xpath="//input[@id='sb_form_q']" элемент="" />
    <DomMouseEvent text="" type="mouseup" xpath="//input[@id='sb_form_q']" элемент="" />
    <DomMouseEvent text="" type="click" xpath="//input[@id='sb_form_q']" элемент="" />
    </Click>
    <Delay delay="2" мс="" id="17" is_last="false" is_start="false" badArrow="" arrow="101" />
    <set_input xpath="//input[@id='sb_form_q']" value="{welcome|test|job|how it's works}" id="18" is_last="false" is_start="false" badArrow="" arrow="18" />
    <Click text="Поиск" id="19" is_last="false" is_start="false" badArrow="" arrow="19">
    <DomMouseEvent text="Войти" type="mousedown" xpath="//input[@id='sb_form_go']" элемент="" />
    <DomFocus type="focus" xpath="//input[@id='sb_form_go']" элемент="" />
    <DomMouseEvent text="Войти" type="mouseup" xpath="//input[@id='sb_form_go']" элемент="" />
    <DomMouseEvent text="Войти" type="click" xpath="//input[@id='sb_form_go']" элемент="" />
    </Click>
    <Delay delay="10" мс="" id="20" is_last="false" is_start="false" badArrow="" arrow="28" />
    <выражение значение="{*СчетчикПрокси*}={*СчетчикПрокси*}+1" id="21" is_last="false" is_start="true" badArrow="" arrow="52" />
    <выражение значение="{*флагЗагрузки*}=0" id="22" is_last="false" is_start="false" badArrow="" arrow="59" /> (обязательное обнуление флага загрузки, на начальные показатели....и это нужно делать после всех блоков проверки, так как этих флагов загрузок может быть 5-10, если не вернуть начальные показатели....при плохом прокси, переменная ФЛАГЗАГРУЗКИ(1-2-3-4-5-6-7-8-9-10) будет иметь положительный результат и будет пытаться найти несуществующий элемент....и будет крашится)
    <если если="{*СчетчикПрокси*}&gt;={*количествоПрокси*}" id="23" is_last="false" is_start="false" badArrow="" arrow="48">(при каждом конечном элементе выполнения программы, когда программа переходит на начальный цикл, нужно делать такие проверки....так как счетчик прокси будет плюсоваться и плюсоваться... а реально их меньше, и будет постоянно выставляться последний прокси, прокси просто ставится на первый....ну все условия зависят от задачи....если так не подходит, значит - просто заканчивает выполнение)
    <выражение значение="{*СчетчикПрокси*}=0" id="24" is_last="false" is_start="false" badArrow="" arrow="49" />
    </если>
    <закрытьвкладку id="25" is_last="false" is_start="false" badArrow="" arrow="65" />
    <добавитьвкладку url="about:blank" id="26" is_last="false" is_start="false" badArrow="" arrow="66" />
    <перейтикid id_="3" условие="" id="27" is_last="false" is_start="false" badArrow="" arrow="72" />
    <конец id="28" is_last="false" is_start="false" badArrow="" arrow="42" />
    </events>
    <описаниепеременных>
    <переменная тип="2" имя="прокси">
    <описание>C:\Program Files (x86)\BotZilla\прокси</описание>
    </переменная>
    </описаниепеременных>
    </project>


    Повторюсь еще раз....хоть я и писал....все организовывается с помощью выражений, переменных, условий и блока перехода к айди.
    Блоком перебор - ничего не сделаешь.....даже частично, но с таким методом, как я предложил, все очень гибкое.
    Если есть сообщения или логины - просто, вводишь переменные и счетчики.....которые при определенных условиях плюсуються....и меняются логины и сообщения....или куча все другого.
    Прокси выставлять рандомно не нужно....их нужно обработать перед загрузкой....удалить дубли...
    Очень важно при работе с прокси!!!!! ЮЗЕРАГЕНТ!!!! Должна быть смена его постоянная...и они должны быть самые актуальные. Это в том случае(ну я уверен что и в любом) если не пользуетесь элитными проксями....или соксами 5.
     
    Последнее редактирование: окт 1, 2016

Поделиться этой страницей