R-Kioski freebie script

📅 2022-02-04T17:25:45.189Z
👁️ 407 katselukertaa
🔓 Julkinen


import requests
import random

from time import sleep
from bs4 import BeautifulSoup

# implement support for https://receive-sms.cc/Finland-Phone-Number/

# kokeile näillä lisää yhdistelmiä

discord_web_hook = ""

# r = requests.get('https://pastebin.fi/r/odllNzfNAV3X/')
r = requests.get('https://www.r-kioski.fi/')
soup = BeautifulSoup(r.text, features="lxml")

def check_for_new_campaign(soup):
  try:
    title = soup.find('div', {'class': 'sampling-campaign-body__left'}).find('h1').text
  except Exception as e:
    return (False, False)

  try:
    description = soup.find('div', {'class': 'sampling-campaign-content'}).text
  except Exception as e:
    return (False, False)

  return (title, description)

def find_campaign_info(soup):
  try:
    nonce = soup.find('input', {'id': 'campaign-contacs-nonce'}).get('value')
  except Exception as e:
    return (False, False)
    
  try:
    campaign_id = soup.find('input', {'name': 'campaign_id'}).get('value')
  except Exception as e:
    return (False, False)
  
  return (nonce, campaign_id)

def notify_of_campaign(title, description, nonce, campaign_id):
  infoMessage = "New campaign found: " + title + "\n\n" + description + "\n\nNonce:" + nonce + "\n\nCampaign ID:" + campaign_id

  print('New campaign found:\n')
  print('Title: ' + title)
  print('Description: ' + description)
  print('Nonce: ' + nonce)
  print('Campaign ID: ' + campaign_id)
  print('\n')
  print('Sending message to Discord...')
  print('----------------------------------------')

  requests.post(discord_web_hook, data={'content': infoMessage})

def get_random_kiosk(soup):
  try:
    kiosks_html = soup.find('div', {'id': 'js-KioskList'}).findAll('option')
    kiosk_id = kiosks_html[random.randint(0, len(kiosks_html) - 1)].get('value')
  except Exception as e:
    return False
  return kiosk_id

def receive_freebies(nonce, campaign_id, phone_number, kiosk_id):
  data = [
    ('campaign-contacs-nonce', nonce),
    ('action', 'sampling_campaign_contacts'),
    ('campaign_id', campaign_id),
    ('phone', phone_number),
    ('city', 'Helsinki'),
    ('kiosk', kiosk_id),
    ('sex', 'male'),
    ('age', '16-19'),
  ]

  response = requests.post('https://www.r-kioski.fi/wordpress/wp-admin/admin-ajax.php', data=data)
  return response.text

def get_phone_number_combinations(phone_number):
  # phone number should be in format 401234567
  phone_number_combinations = []
  phone_number_combinations.append("0" + phone_number)
  phone_number_combinations.append("+358" + phone_number)
  phone_number_combinations.append("+(358)0" + phone_number)
  phone_number_combinations.append("00+(358)0" + phone_number)
  phone_number_combinations.append("00(+358)(+358)" + phone_number)
  phone_number_combinations.append("00(+358)(+358)0" + phone_number)
  phone_number_combinations.append("00+358" + phone_number)

  # ei vahvistettu
  # phone_number_combinations.append("(+358)(+358)0" + phone_number)
  return phone_number_combinations

def check_campaign_used(campaign_id):
  with open('campaigns.txt') as f:
    for line in f:
      if str(campaign_id) == line.replace('\n', ''):
        return True
  return False

def mark_campaign_used(campaign_id):
  f = open("campaigns.txt", "a")
  f.write("\n" + str(campaign_id))
  f.close()

if __name__ == "__main__":
  requests.post(discord_web_hook, data={'content': 'I have started!'})

  print("Starting...")
  print("----------------------------------------")
  print("")
  print("Ultimate R-kioski freebie bot")
  print("Made with love by @Erikoisjaakari#4676")
  print("")
  print("----------------------------------------")
  while True:
    (title, description) = check_for_new_campaign(soup)
    (nonce, campaign_id) = find_campaign_info(soup)

    if title and not check_campaign_used(campaign_id):
      notify_of_campaign(title, description, nonce, campaign_id)
      with open('numbers.txt') as f:
        for line in f:
          original_phone_number = line.strip()
          phone_numbers = get_phone_number_combinations(original_phone_number)
          kiosk_id = get_random_kiosk(soup)

          for phone_number in phone_numbers:
            result = receive_freebies(nonce, campaign_id, phone_number, kiosk_id)
            phone_submission_result = '------------------------\n' + 'Tried to send message to ' + phone_number + " with result: " + result + '\n------------------------'
            print(phone_submission_result)
            requests.post(discord_web_hook, data={'content': phone_submission_result})

          print('Phone number: ' + original_phone_number)
          print('Kiosk ID: ' + kiosk_id)
          print('----------------------------------------')
      # mark_campaign_used(campaign_id)

    sleep(60)