Кредиты. Фотострана

Кредиты. Фотострана

Цифры

Поэтому я выбрал оффер "УбРиР — Открытый" в партнерке ad1. Можете посмотреть сами, форма заявки там очень короткая, из документов нужен только паспорт. Сама форма разбита на 2 части, это очень хорошее решение. В общем я думаю вы поняли смысл подбора банков для рекламы в социальных сетях. Можно так же взять "УбРиР — Минутное дело", почти одно и тоже, но результаты могут быть выше. Итак, сразу, что бы вас не томить, покажу вам статистику моего сегодняшнего слива с фотостраны: Расход рекламной кампании

Да, с фотостраны можно сливать и по 3.5 рубля. Но это большая редкость, тут важно зацепить не 1 конкретный тизер, а всю кампанию, а так же поиграться с настройками таргетинга для уменьшения цены за 1 клик. Кстати, не забудьте о них, этот банк принимает заявки начиная с 21 года, практически по всей России. Но обычно, средняя цена здесь за 1 клик по кредитной тематике находится в интервале 4-5 рублей. Покажу вам пример одного из своих успешных объявлений: Успешное объявление

Так же при создании объявления, фотострана может показать очень низкую рекомендуемую цену, у меня сегодня было от 1.81 до 2.17 рублей за клик. Это ложь и провокация, скорее всего эта сумма касается развлекательной тематики. Впрочем, вы можете поставить эту цену и убедиться в том, что к банкам она не относиться 🙂 Что там по доходам: Доход рекламной кампании

Скрин я разрезал на пополам, т.к. он слишком длинный, но я думаю и так все понятно. 7900 — 3400 = 4500 рублей чистого профита. Очень хороший показатель, такое ROI бывает редко. Обычно трафик сливается по цене за 1 клик в 4.5 или 5 рублей, поэтому затраты идут выше. Теперь перейдем непосредственно к автоматизации.

Работа для робота

from grab import Grab, UploadFile
import time, re, random

with open('Texts.txt') as f: full_texts = filter(lambda txt: txt != '', f.read().splitlines()) # Тайтлы и текста объявлений

Здесь мы подключаем необходимые библиотеки, и файл содержащий заголовки и текста наших объявлений по разделителю "двоеточие"

def start_bot():

    response, login_FS, auth = False, 0, 0

    while not response:

        if not login_FS: # Если еще нету куки авторизации
            g = Grab(); login = 'ВАШ_ЛОГИН'; pwd = 'ВАШ_ПАРОЛЬ'
            g.setup(headers={'Accept-Language' : 'en-us,en;q=0.8', 'Accept-Charset' : 'utf-8,windows-1251;q=0.7,*;q=0.5', 'X-Requested-With' : ''}) # Настраиваем прокси сервис
            FS_Bot = BOT(login, pwd); time.sleep(random.uniform(1, 3))
            login = FS_Bot.Login(g=g.clone(), last4='ПОСЛЕДНИЕ_4_ЦИФРЫ_ТЕЛЕФОНА'); time.sleep(random.uniform(1, 3)) # Логинимся

        if login: 

            login_FS = 1 # Делаем пометку о том что есть нужные куки и заного авторизовываться не нужно
            print u"
Что делаем дальше?

1 — Добавить 10 новых тизеров"
            resp = str(raw_input("
Press your choice: "))

            if resp == '1':
                bt = FS_Bot.Add_Teasers(g=login) # Обновляем наши тизеры

            else: print u"До свиданья!"; response = True

        else: continue # Если не удалось залогиниться — начинаем все заного

start_bot(); raw_input('')

Функция запуска собственной персоны. Здесь вам нужно ввести логин и пароль от вашего аккаунта с которым будет работать софт. Так же не забудьте ввести 4 последние цифры телефона на который этот аккаунт привязан. Фотострана частенько любит просить вас подтвердить то, что вы истинный владелец. Вариант выбор всего 1 — это добавить 10 новых тизеров, можно и больше, позже вы увидите где можно поменять это значение. При нажатии на любую другую кнопку — софт завершит работу. Но перед началом работы нам нужно авторизоваться, вот метод авторизации:

def Login(self, g, last4): # Метод авторизации
        print u"Авторизуемся, логин — %s, пароль — %s …
" % (self.login, self.pwd); self.last4 = last4
        g.go('http://fotostrana.ru'); time.sleep(random.uniform(1, 1))
        csrftkn = re.findall(r'name="csrftkn" value="(.+?)"', g.response.body)[0]; time.sleep(random.uniform(1, 1)) # Тащим токен
        g.go('http://fotostrana.ru/signup/signup/auth/', post='csrftkn=%s&user_email=%s&user_password=%s&submitted=1&issetFields[]=csrftkn&issetFields[]=user_email&issetFields[]=user_password&issetFields[]=submitted&_fs2ajax=1' % (csrftkn, self.login, self.pwd), headers={'Referer' : 'http://fotostrana.ru/signup/login/?fromHeader=1'}); time.sleep(random.uniform(1, 1)) # Авторизуемся

        if re.search(r'is_login":1', g.response.body): # Проверяем авторизацию
            g.go('http://fotostrana.ru'); time.sleep(random.uniform(1, 1)) # Переходим в свой профиль
            if re.search(r'Лучшие фотографии', g.response.body): print u"Вход выполнен успешно, начинаем работу …
"; return g.clone() # Если авторизация успешна

        elif re.search(r'Защита профиля', g.response.body): # Если выпала защита профиля
            print u"Вход с нового адреса — вводим последние 4 цифры …"
            g.go(g.response.url, post={'smscode' : last4, 'saveaccess' : '4'}); time.sleep(random.uniform(1, 1)) # Вводим последние 4 цифры
            if re.search(r'Лучшие фотографии', g.response.body): # Если номер введен верно
                print u"Вход выполнен успешно, начинаем работу …
"; return g.clone()
            else: return 0

        else:
            with open('resp.html', 'w') as f: f.write(g.response.body)
            print u"Вход не удался, текущий url — %s, пробуем заного …" % g.response.url; return False

Ну здесь все просто. Переходим на фотострану, тащим токен авторизации, пробуем авторизоваться, если нам это удалось то возвращаем объект с сессией авторизации, если нет, то проверяем не вылезла ли защита профиля, и если вылезла, то вводим последние 4 цифры телефона. Если не то и не другое, то скорее всего сработал антифрод, бьемся до тех пор пока не войдем, а так же, на всякий случай, записываем тело ответа сервера в файл. Мало ли что там =) Кстати, как вы уже поняли, это метод должен быть в классе BOT(object).

После авторизации идет метод добавления тизеров:

def Add_Teasers(self, g): # Метод добавления новых тизеров в таргет
        sub = 1

        for i in range(10): # Будем создавать по 10 объявлений за проход
            obv = False

            while not obv: # До тех пор пока не создали объявление
                try:

                    # title, text = random.choice(titles), random.choice(texts) # Текста и тайтлы берем рандомно
                    full_text = random.choice(full_texts); title = full_text.split(':')[0].decode('cp1251').encode('utf-8'); text = full_text.split(':')[-1].decode('cp1251').encode('utf-8')
                    print u"Начинаем создавать объявление …
Заголовок — %s
Текст — %s" % (title.decode('utf-8'), text.decode('utf-8'))
                    g.go('http://fotostrana.ru/target/index/create/?default_campaign_id=929'); time.sleep(1) # Переходим в создание объявления
                    g.go('http://fotostrana.ru/target/index/uploadImages/', multipart_post={'type' : '1', 'photo' : UploadFile(r'ССЫЛКА_ДО_ИЗОБРАЖЕНИЯ')}, headers={'Origin' : 'http://fotostrana.ru'}); time.sleep(1) # Заливаем нашу картинку
                    photo_url = re.findall(r'photoLoaded("(.+?)"', g.response.body)[0]
                    photo_id = re.findall(photo_url + r'", "(.+?)"', g.response.body, re.S)[0]
                    print u"Загрузили изображение, его ID в системе — %s, начинаем создавать объявление …" % photo_id
                    g.go('http://fotostrana.ru/target/index/savebanner/', post={'_ajax' : '1', 'banner[banner_type_pay]' : '1', 'banner[banner_type_content]' : '1', 'banner[site]' : 'ССЫЛКА_ДЛЯ_СЛИВА/FS_%s' % sub, 'banner[domain]' : 'landing.ubrr.ru', 'banner[app]' : '0', 'banner[title]' : title, 'banner[text]' : text, 'banner[image_crop]' : '0_0_181.3846153846154_131_181.3846153846154_131', 'banner[image_name]' : photo_id, 'banner[sex]' : '0', 'banner[age_from]' : '21', 'banner[age_to]' : str(random.randint(55, 65)), 'banner[country]' : '1', 'banner[cities]' : '', 'banner[regions]' : '', 'banner[marry]' : '', 'banner[browser]' : '', 'banner[pay]' : '0', 'banner[campaign_choose_type]' : '2', 'banner[campaign_title]' : '', 'banner[campaign_id]' : '929', 'banner[price]' : '5', 'type' : '1'}, headers={'Origin' : 'http://fotostrana.ru', 'X-Requested-With' : 'XMLHttpRequest', 'Referer' : 'http://fotostrana.ru/target/index/create/?default_campaign_id=929'}); time.sleep(1) # Создаем объявление
                    banner_id = re.search(r'banner_id":(d+?),', g.response.body).group(1) # Тащим ID созданного объявления
                    print u"Объявление создано, его ID — %s, запускаем …" % banner_id
                    with open('banner_ids.txt', 'a') as f: f.write('%s
' % banner_id) # Записываем id баннера в файл
                    g.go('http://fotostrana.ru/target/ajax/changebannerstatus/?_ajax=1&bannerId=%s&status=run&textstatus=false' % banner_id); time.sleep(1) # Запускам объявление
                    print u"Объявление запущено, спим немного и продолжаем …
"; sub += 1; obv = True; time.sleep(random.randint(5, 10))

                except Exception as err:
                    with open('resp.html', 'w') as f: f.write(g.response.body)
                    print u"Тизер создать не удалось, спим немного и пробуем заного …
"; time.sleep(random.randint(1, 1))

Вот здесь, в цикле for, можно изменить количество добавляемых тизеров за раз. Дальше идет выбор случайного строки из файла, разделение её на заголовок и текст, заливка изображения (поставьте свою ссылку), создание объявления (поставьте там свою ссылку для слива трафика) и сохранение идентификатора нового объявления в файл. Ошибки (которые бывают частенько) обрабатываем. Скрин работы программы:

Работа программы

Упрощая вам жизнь, даю ссылку на полный код скрипта. В папке со скриптом обязательно должен находится текстовый документ "Texts.txt" с заголовками и текстами для ваших тизеров в формате — Заголовок:Текст, каждая пара с новой строчки.

Что в итоге

Как видите, я выложил вам код скрипта, а не готовый .exe файл. Поймите и меня, если каждый сейчас побежит теребить фотострану этим софтом, то лавочку скоро прикроют.

Поэтому использовать его смогут только самые смышленые. А всего то нужно установить интерпретатор питона, и засунуть код в файл с расширением .py, предварительно поменяв данные на свои. Но так же я дам вам еще пару вариантов как получить этот софт:

  • Купить. Для тех у кого много денег и мало времени. За символическую плату в 100$ я отдам вам готовый софт в .exe формате, вам останется только вписать в файл свой логин, пароль и 4 цифры телефона. Если этот вариант для вас, стучите мне в аську — 498597433, там обо всем договоримся.
  • Написать статью. Для тех у кого мало денег, и заставить работать скрипт ну никак не выходит. Вы можете написать небольшую статью на любую из тем в моем блоге, на любом из известных форумов, в разделе который касается темы заработка в интернете со ссылкой на мой блог, постучаться мне в аську — 498597433 и дать ссылку на свою статью. Если меня все утроит — вы так же получите готовый .exe вариант. Кстати, в последних 2-ух случаях в софт будут включены такие ништяки как автоматический запуск и удаление тизеров, а так автоматическая смена цены клика всех тизеров в кампании. Да, все это можно делать и руками, просто времени нужно будет больше, а результаты могут быть те же. На этом все, до скорых встреч.

Отправить ответ

Оставьте первый комментарий!

Notify of
avatar
wpDiscuz