Last active
December 15, 2015 18:01
-
-
Save evgeniyp/bdd5d4a8966f3f82967c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import http.client | |
import time | |
import json | |
import ctypes | |
import os | |
from tkinter import * | |
import urllib.parse | |
import hashlib | |
import re | |
import socket | |
import atexit | |
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary | |
from splinter import Browser | |
from selenium import webdriver | |
import webbrowser | |
#from stats import MyApp | |
import socks | |
app_version=0.03 | |
api_host="api.trafficstore.com" | |
pid="" | |
br="" | |
service_key = "" | |
stats="" | |
def check_version(): | |
data=http_request("GET",api_host,"/version/auto") | |
parsed_data=json.loads(data.decode("utf-8")) | |
version = parsed_data['version'] | |
if float(version) > app_version: | |
create_alert() | |
return 0 | |
return 1 | |
def save_data_on_exit(): | |
if service_key != "": | |
http_request('POST',api_host,"/task/types/77/close") | |
return 0 | |
def http_request(method,host,url): | |
while 1: | |
try: | |
c = http.client.HTTPSConnection(host) | |
c.timeout=60 | |
c.request(method, url, headers={"X-SERVICE-KEY": service_key,'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'}) | |
response = c.getresponse() | |
print(response.status) | |
if response.status == 200 or response.status == 201: | |
break | |
time.sleep(2) | |
print(response.getheaders()) | |
print(response.read()) | |
except(http.client.HTTPException, socket.error) as ex: | |
print("cannot connect to api server") | |
finally: | |
time.sleep(2) | |
data = response.read() | |
c.close() | |
return data | |
def click_by_xy(x,y): | |
ctypes.windll.user32.SetCursorPos(x, y) | |
ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # left down | |
ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # left up | |
def get_resolution(): | |
user32 = ctypes.windll.user32 | |
user32.SetProcessDPIAware() | |
w=user32.GetSystemMetrics(0) | |
h=user32.GetSystemMetrics(1) | |
return h,w | |
def write_error_code_alert(message): | |
result = ctypes.windll.user32.MessageBoxW(0, message, message, 1) | |
return 0 | |
def create_alert(): | |
result = ctypes.windll.user32.MessageBoxW(0, u"Доступна новая версия программы", u"Доступна новая версия программы", 1) | |
if result == 1: | |
start_browser("http://trafficstore.com/autoprogram") | |
elif result == 2: | |
exit(0) | |
def ok_login(login,password): | |
global service_key | |
print("in ok login, login "+login) | |
#headers={"email":login,"password":password} | |
params = urllib.parse.urlencode({'email': login, 'password': password}) | |
if login != "": | |
while 1: | |
try: | |
c = http.client.HTTPSConnection("www.trafficstore.com") | |
c.timeout=20 | |
c.request("POST", "/sapi/user/auth",urllib.parse.urlencode({'email': login, 'password': password}),headers = {"Content-type": "application/x-www-form-urlencoded",'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'}) | |
response = c.getresponse() | |
print(response.status) | |
if response.status == 200 or response.status == 201: | |
break | |
elif response.status == 401: | |
write_error_code_alert('Error, code 401') | |
os._exit(0) | |
except(http.client.HTTPException, socket.error) as ex: | |
print("cannot connect to api server") | |
finally: | |
time.sleep(2) | |
data = response.getheader("X-SERVICE-KEY") | |
c.close() | |
print(data) | |
service_key = data | |
return 0 | |
def get_credentials(): | |
master = Tk() | |
master.wm_title(u"Авторизация") | |
master.update_idletasks() | |
width = master.winfo_width() | |
height = master.winfo_height() | |
x = (master.winfo_screenwidth() // 2) - (width // 2) | |
y = (master.winfo_screenheight() // 2) - (height // 2) | |
master.geometry('{}x{}+{}+{}'.format(200, 70, x, y)) | |
label = Label(master,text=u'Email: ') | |
e = Entry(master) | |
e2 = Entry(master) | |
label1 = Label(master,text=u'Пароль: ') | |
label.grid(row=0,column=1) | |
e = Entry(master) | |
e.grid(row=0,column=2) | |
label1.grid(row=1,column=1) | |
e2.grid(row=1,column=2) | |
e.focus() | |
new_order = (e, e2, ) | |
def on_closing(): | |
master.destroy() | |
os._exit(0) | |
master.protocol("WM_DELETE_WINDOW", on_closing) | |
def callback(): | |
print(e.get()) | |
print(e2.get()) | |
ok_login(e.get(),e2.get()) | |
master.destroy() | |
b = Button(master, text=u"Вход", width=10, command=callback) | |
b.grid(row=2,column=2) | |
new_order = (e, e2, b) | |
for widget in new_order: | |
widget.lift() | |
master.mainloop() | |
return 0 | |
def programm_version(): | |
return programm_version | |
def get_promo_time_on_site(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['timeOnSite'] | |
def get_promo_id(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['id'] | |
def get_promo_goalid(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['goalId'] | |
def get_promo_type(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['type'] | |
def get_is_use_mouse(task_json): | |
parsed_data=json.loads(task_json) | |
if 'useMouse' in parsed_data.keys(): | |
return parsed_data['useMouse'] | |
else: | |
return 0 | |
def get_limitExecutor(task_json): | |
parsed_data=json.loads(task_json) | |
if 'limitExecutor' in parsed_data.keys(): | |
return parsed_data['limitExecutor'] | |
else: | |
return 0 | |
def get_promo_url(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['url'] | |
def get_autotask_timeout(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['timeout'] | |
def get_autotask_quantity(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['quantity'] | |
def get_autotask_quantity_available(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['quantityAvailable'] | |
def get_autotask_url(task_json): | |
parsed_data=json.loads(task_json) | |
return parsed_data['urls'] | |
def stop_browser(): | |
p.terminate() | |
def start_browser(url): | |
#import winreg as winreg | |
#global pid | |
#aReg = winreg.ConnectRegistry(None,winreg.HKEY_CLASSES_ROOT) | |
#aKey = winreg.OpenKey(aReg,r"http\shell\open\command") | |
#val=winreg.QueryValueEx(aKey, "") | |
#m = re.search('"(.+?)"', val[0]) | |
#if m: | |
# found = m.group(1) | |
#print(found) | |
#print(url) | |
#pid = subprocess.Popen([found, url]) | |
#def_browser=get_browser_exec_name() | |
#def_browser=def_browser.lower() | |
#def_browser_path=get_default_browser_path() | |
global br | |
#print(def_browser) | |
#if def_browser.find('firefox') != -1: | |
# br = Browser('firefox') | |
# #firebox_binary = FirefoxBinary(def_browser_path) | |
# #br = webdriver.Firefox(firefox_binary=firebox_binary) | |
#elif def_browser.find('chrome') != -1: | |
# br = Browser('chrome') | |
#else: | |
try: | |
br = Browser() | |
br.visit(url) | |
print("trying max window") | |
br.driver.maximize_window() | |
except: | |
webbrowser.open(url) | |
#except: | |
# def_browser=get_browser_exec_name() | |
# def_browser=def_browser.lower() | |
# def_browser_path=get_default_browser_path() | |
# print(def_browser) | |
# if def_browser.find('firefox') != -1: | |
# br = Browser('firefox') | |
# firebox_binary = FirefoxBinary(def_browser_path) | |
# br = webdriver.Firefox(firefox_binary=firebox_binary) | |
# elif def_browser.find('chrome') != -1: | |
# br = Browser('chrome') | |
finally: | |
time.sleep(5) | |
def job_done(): | |
while 1: | |
c = http.client.HTTPConnection("system-api.trafficstore.ru") | |
c.request("GET", "/platform/linux/jobs", headers={"X-SERVICE-KEY": "kamnh1002834lva"}) | |
response = c.getresponse() | |
if response.status == 200: | |
break | |
time.sleep(2) | |
c.close() | |
return data | |
def get_current_user_home_dir(): | |
homedir = os.path.expanduser('~') | |
try: | |
from win32com.shell import shellcon, shell | |
homedir = shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, 0, 0) | |
except ImportError: | |
homedir = os.path.expanduser("~") | |
return homedir | |
def get_job(host, url): | |
if url == "": | |
url="/platform/linux/jobs" | |
if host == "": | |
host="api.trafficstore.com" | |
print(service_key) | |
http_request("POST", api_host,"/task/types/77/close") | |
data=http_request("GET",host,"/task/random") | |
print(data.decode("utf-8")) | |
task_id=get_promo_id(data.decode("utf-8")) | |
print(task_id) | |
data2=http_request("GET",host,"/task/"+task_id) | |
print(data2.decode("utf-8")) | |
#c = http.client.HTTPConnection("system-api.trafficstore.ru") | |
#c.request("PUT", "/platform/linux/jobs", headers={"X-SERVICE-KEY": "kamnh1002834lva","Content-Length":"0"}) | |
#response = c.getresponse() | |
return data2 | |
def get_exit_ip(): | |
c = http.client.HTTPConnection("mototrend.org") | |
c.request("GET", "/tst.php?ip") | |
response = c.getresponse() | |
print(response.status, response.reason) | |
data = response.read() | |
c.close() | |
return data | |
def get_external_country(): | |
return "" | |
def check_cookies(): | |
browser_path=get_default_browser_path() | |
print(browser_path) | |
#is_google_cookie_exist="" | |
if len(browser_path) != 0: | |
def_browser=get_browser_exec_name() | |
def_browser=def_browser.lower() | |
total_size = 0 | |
if def_browser.find('firefox') != -1: | |
#check main folder size | |
for dirpath, dirnames, filenames in os.walk(browser_path): | |
for f in filenames: | |
fp = os.path.join(dirpath, f) | |
total_size += os.path.getsize(fp) | |
#conn = sqlite3.connect(browser_path+'/cookie.sqlite') | |
#conn.execute("select * from moz_cookies where name='yandexuid'") | |
#cookie_data=conn.fetchone()[0] | |
#print(cookie_data) | |
#conn.close() | |
elif def_browser.find('chrome') != -1: | |
#check main folder size | |
for dirpath, dirnames, filenames in os.walk(browser_path): | |
for f in filenames: | |
fp = os.path.join(dirpath, f) | |
total_size += os.path.getsize(fp) | |
else: | |
write_error_code_alert('Error, code 103') | |
total_size=total_size/1024/1024 | |
if total_size < 30: | |
write_error_code_alert('Error, code 100') | |
return -100 | |
#elif len(cookie_data) == "": | |
# write_error_code_alert('Error, code 104') | |
# return -104 | |
else: | |
return 0 | |
def get_browser_exec_name(): | |
import winreg as winreg | |
def_browser=getDefaultBrowser() | |
if def_browser == "IE.HTTP": | |
aReg = winreg.ConnectRegistry(None,winreg.HKEY_LOCAL_MACHINE) | |
aKey = winreg.OpenKey(aReg,r"SOFTWARE\Classes\IE.HTTP\shell\open\command") | |
else: | |
aReg = winreg.ConnectRegistry(None,winreg.HKEY_CLASSES_ROOT) | |
aKey = winreg.OpenKey(aReg,r"http\shell\open\command") | |
val=winreg.QueryValueEx(aKey, "") | |
m = re.search('"(.+?)"', val[0]) | |
if m: | |
found = m.group(1) | |
browser_exec_name=os.path.basename(found) | |
#print("get_browser_exec_name = "+browser_exec_name) | |
return browser_exec_name | |
else: | |
write_error_code_alert('Error, code 102') | |
return "" | |
def get_default_browser_path(): | |
import winreg as winreg | |
def_browser=getDefaultBrowser() | |
if def_browser == "IE.HTTP": | |
aReg = winreg.ConnectRegistry(None,winreg.HKEY_LOCAL_MACHINE) | |
aKey = winreg.OpenKey(aReg,r"SOFTWARE\Classes\IE.HTTP\shell\open\command") | |
else: | |
aReg = winreg.ConnectRegistry(None,winreg.HKEY_CLASSES_ROOT) | |
aKey = winreg.OpenKey(aReg,r"http\shell\open\command") | |
#aReg = winreg.ConnectRegistry(None,winreg.HKEY_CURRENT_USER) | |
#aKey = winreg.OpenKey(aReg, r"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice") | |
val=winreg.QueryValueEx(aKey, "") | |
m = re.search('"(.+?)"', val[0]) | |
if m: | |
found = m.group(1) | |
print("default browser "+found) | |
browser_path=os.path.dirname(found) | |
return browser_path | |
else: | |
write_error_code_alert('Error, code 101') | |
return "" | |
def get_first(iterable, default=None): | |
if iterable: | |
for item in iterable: | |
return item | |
return default | |
def start_autotask(job_data): | |
global br | |
print("start autotask "+job_data.decode("utf-8")) | |
task_id=get_promo_id(job_data.decode("utf-8")) | |
print (task_id) | |
http_request('POST',api_host,"/task/types/77/close") | |
data=http_request("POST", api_host,"/task/"+task_id+"/work") | |
goal_id=get_promo_goalid(data.decode("utf-8")) | |
print("promo goalId = "+goal_id) | |
data=http_request("GET", api_host,"/task/"+task_id) | |
print(data.decode("utf-8")) | |
quantity=int(get_limitExecutor(data.decode("utf-8"))) | |
timeout=int(get_autotask_timeout(data.decode("utf-8"))) | |
urls=get_autotask_url(data.decode("utf-8")) | |
url=get_first(urls) | |
print(quantity,timeout) | |
is_use_mouse=int(get_is_use_mouse(data.decode("utf-8"))) | |
quantity_done=0 | |
while quantity > 0: | |
print(quantity) | |
timeout_tmp=timeout | |
start_browser(url) | |
print("started browser") | |
time.sleep(10) | |
if is_use_mouse: | |
click_by_xy(600,350) | |
while timeout_tmp > 0: | |
if is_browser_not_running(): | |
print("closed browser") | |
save_data_on_exit() | |
os._exit(0) | |
timeout_tmp=timeout_tmp-1 | |
time.sleep(1) | |
while 1: | |
if not is_browser_not_running(): | |
print("killing browser") | |
if br: | |
br.quit() | |
else: | |
os.system("taskkill /im "+get_browser_exec_name()+" /F") | |
else: | |
break | |
time.sleep(1) | |
print("killed browser") | |
quantity_done=quantity_done+1 | |
hash_string="{0}z2Ipah07XmiiAn5AIwGYnaB20AwV4q0D{1}".format(str(goal_id), str(quantity_done)) | |
print(hash_string) | |
hash_string=hashlib.sha256(hash_string.encode("utf-8")).hexdigest() | |
print(quantity_done) | |
print(hash_string) | |
while 1: | |
c = http.client.HTTPSConnection(api_host) | |
c.request("PUT", "/task/goal/{0}/sync".format(str(goal_id)),json.dumps({'hash': hash_string}),headers = {"Content-type": "application/json","X-SERVICE-KEY": service_key,'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'}) | |
response = c.getresponse() | |
print(response.status) | |
if response.status == 200 or response.status == 201: | |
break | |
time.sleep(2) | |
print(response.getheaders()) | |
print(response.read()) | |
c.close() | |
print("synced") | |
quantity=quantity-1 | |
#while 1: | |
# c = http.client.HTTPConnection("api.test.trafficstore.ru") | |
# c.request("PUT", "/task/goal/"+goal_id+"/sync",urllib.parse.urlencode({'hash': hashlib.sha256(goal_id+"z2Ipah07XmiiAn5AIwGYnaB20AwV4q0D"+quantity_done),'state':'SOLVED'}),headers = {"Content-type": "application/json"}) | |
# response = c.getresponse() | |
# print(response.status) | |
# if response.status == 200 or response.status == 201: | |
# break | |
# time.sleep(2) | |
return 0 | |
def is_browser_not_running(): | |
r = os.popen('tasklist /FI "STATUS eq Running"').read().strip().split('\n') | |
found = False | |
def_browser=get_browser_exec_name() | |
#def_browser_path=get_default_browser_path() | |
print(def_browser) | |
#print(def_browser_path) | |
for p in r: | |
if p.startswith(def_browser): | |
found = True | |
if not found: | |
return 1 | |
else: | |
return 0 | |
def view_youtube(data): | |
url=get_promo_url(job_data.decode("utf-8")) | |
quantity=int(get_autotask_quantity(data.decode("utf-8"))) | |
timeout=int(get_autotask_timeout(data.decode("utf-8"))) | |
while quantity > 0: | |
timeout_tmp=timeout | |
print(quantity) | |
start_browser(url,timeout) | |
time.sleep(5) | |
# click_by_xy(500,500) | |
while timeout_tmp > 0: | |
if is_browser_not_running(): | |
print("closed browser") | |
exit(0) | |
timeout_tmp=timeout_tmp-1 | |
time.sleep(1) | |
os.system("taskkill /im firefox.exe") | |
quantity=quantity-1 | |
return 0 | |
def view_rutube(data): | |
url=get_promo_url(job_data.decode("utf-8")) | |
quantity=int(get_autotask_quantity(data.decode("utf-8"))) | |
timeout=int(get_autotask_timeout(data.decode("utf-8"))) | |
while quantity > 0: | |
timeout_tmp=timeout | |
print(quantity) | |
start_browser(url,timeout) | |
time.sleep(5) | |
# click_by_xy(500,500) | |
while timeout_tmp > 0: | |
if is_browser_not_running(): | |
print("closed browser") | |
exit(0) | |
timeout_tmp=timeout_tmp-1 | |
time.sleep(1) | |
os.system("taskkill /im firefox.exe") | |
quantity=quantity-1 | |
return 0 | |
def view_vimeo(data): | |
url=get_promo_url(job_data.decode("utf-8")) | |
quantity=int(get_autotask_quantity(data.decode("utf-8"))) | |
timeout=int(get_autotask_timeout(data.decode("utf-8"))) | |
while quantity > 0: | |
timeout_tmp=timeout | |
print(quantity) | |
start_browser(url,timeout) | |
time.sleep(5) | |
# click_by_xy(500,500) | |
while timeout_tmp > 0: | |
if is_browser_not_running(): | |
print("closed browser") | |
exit(0) | |
timeout_tmp=timeout_tmp-1 | |
time.sleep(1) | |
os.system("taskkill /im firefox.exe") | |
time.sleep(5) | |
quantity=quantity-1 | |
return 0 | |
def start_promo_type(job_data): | |
promo_type=int(get_promo_type(job_data.decode("utf-8"))) | |
if promo_type == 30: | |
print(30) | |
elif promo_type == 31: | |
print(30) | |
elif promo_type == 32: | |
print(30) | |
elif promo_type == 33: | |
print(30) | |
elif promo_type == 34: | |
print(30) | |
elif promo_type == 35: | |
print(30) | |
elif promo_type == 36: | |
view_youtube(job_data) | |
elif promo_type == 37: | |
print(30) | |
elif promo_type == 40: | |
view_rutube(job_data) | |
elif promo_type == 41: | |
view_vimeo(job_data) | |
elif promo_type == 69: | |
print(69) | |
elif promo_type == 77: | |
start_autotask(job_data) | |
return 0 | |
def getDefaultBrowser(): | |
import winreg as winreg | |
aReg = winreg.ConnectRegistry(None,winreg.HKEY_CURRENT_USER) | |
aKey = winreg.OpenKey(aReg, r"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice") | |
if aKey: | |
val=winreg.QueryValueEx(aKey, "Progid") | |
return val[0] | |
else: | |
return "IE.HTTP" | |
def show_me_alive(): | |
str = 'alive' | |
sock = socket.socket() | |
sock.connect(('mototrend.org', 9090)) | |
while 1: | |
sock.send(bytes(str,'utf-8')) | |
#data = sock.recv(1024) | |
time.sleep(5) | |
return 0 | |
def socks_server(): | |
return 0 | |
def get_firefox_profile_dir(): | |
def_browser=getDefaultBrowser() | |
home_user_dir=get_current_user_home_dir() | |
if def_browser == "FirefoxURL": | |
part_of_path="Mozilla\Firefox\Profiles\g3lj9cpd.default" | |
#trying to get_profile | |
return 0 | |
def main(): | |
#try: | |
#first checks | |
#trying get get_browser_exec_name | |
# if check_version(): | |
#if get_browser_exec_name() != "": | |
# get_credentials() | |
# if check_cookies() == 0: | |
# atexit.register(save_data_on_exit) | |
# if service_key != "": | |
# job_data=get_job("","") | |
# start_promo_type(job_data) | |
# else: | |
# write_error_code_alert('Error, code 200') | |
# os._exit(0) | |
# else: | |
# os._exit(0) | |
#finally: | |
# save_data_on_exit() | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment