N久之前的刷数字币羊毛脚本

1、切换ip
2、对接短信验证码
3、对接验证码识别

#coding:utf-8

import requests,re,time,sys,json,datetime,urllib,os,random,linecache,base64

reload(sys)
sys.setdefaultencoding('utf-8')

from ShowapiRequest import ShowapiRequest
import multiprocessing
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.proxy import *
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from PIL import Image

def get_yima(url):
    headers = {
        "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding":"gzip, deflate",
        "Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8",
        "Cache-Control":"max-age=0",
        "Connection":"keep-alive",
        "Cookie":"__cfduid=d122450b84d9e008a1337aac8df9b97811511877258",
        "Host":"api.51ym.me",
        "Upgrade-Insecure-Requests":"1",
        "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
    }

    html = requests.get(url,headers=headers,timeout=30)
    code = html.encoding
    return html.content

def get_tianma(url):
    headers = {
        "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding":"gzip, deflate",
        "Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8",
        "Cache-Control":"max-age=0",
        "Connection":"keep-alive",
        "Cookie":"__cfduid=dc7085e092fe2b17bb572f8f694e12d051512015018",
        "Host":"api.tianma168.com",
        "Upgrade-Insecure-Requests":"1",
        "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",

    }
    html = requests.get(url,headers=headers,timeout=30)
    code = html.encoding
    return html.content


def get_zhima_ip():

    url = "http://webapi.http.zhimacangku.com/getip?num=1&type=1&pro=&city=0&yys=0&port=2&time=1&ts=0&ys=0&cs=0&lb=1&sb=0&pb=45&mr=1®ions="

    html = requests.get(url,timeout=30)
    ip = html.content.strip()
    return ip


def search(req,html):
    text = re.search(req,html)
    if text:
        data = text.group(1)
    else:
        data = 'no'
    return data


def gain_mobile():
    url = 'http://api.51ym.me/UserInterface.aspx?action=getmobile&itemid=12503&token=xxx'
    a = get_yima(url)
    mobile = search('(\d{11})',a)
    return mobile

def gain_sms(input_mobile):
    url = 'http://api.51ym.me/UserInterface.aspx?action=getsms&mobile=%s&itemid=12503&token=xxx' % input_mobile
    a = get_yima(url)
    return a

def gain_black(input_mobile):
    url = 'http://api.51ym.me/UserInterface.aspx?action=addignore&mobile=%s&itemid=12503&token=xxx' % input_mobile
    a = get_yima(url)
    return a


def tm_login():
    url = 'http://api.tianma168.com/tm/Login?uName=a631381702&pWord=ab24562660&Developer=mzpK3SBKBcA%%3d'
    a = get_tianma(url)
    token = search('([^&].*?)&',a)
    return token

def tm_gain_mobile(token):
    url = "http://api.tianma168.com/tm/getPhone?ItemId=64802&token=%s" % token
    a = get_tianma(url)
    mobile = search('(\d+)',a)
    return mobile

def tm_gain_sms(token,mobile):
    url = "http://api.tianma168.com/tm/getMessage?token=%s&itemId=64802&phone=%s" % (token,mobile)
    a = get_tianma(url)
    code = search(r' (\d{4}) ',a)
    return code

def tm_black(token,mobile):
    url = 'http://api.tianma168.com/tm/addBlack?token=%s&phoneList=%s' % (token,mobile)
    a = get_tianma(url)
    return a

def get_ip():
    a = os.popen('curl -x "http://http-cla.abuyun.com:9030" --proxy-basic --proxy-user H3Q0N268PZ1375FC:C63714C012917AFD http://proxy.abuyun.com/switch-ip')
    return a


def authcode_showapi(base64_data):

    # typeID说明
    # 识别4位数字:14
    # 识别4位英文:24
    # 识别4位英数混合:34
    # 识别4位汉字:44
    # 是被4位英文数字汉字混合:54
    # other:https://www.showapi.com/api/view/184/6

    r = ShowapiRequest("http://route.showapi.com/184-5", "67544", "5e1e3d13b7ed477bb0fb0d1986eddad8")
    r.addBodyPara("img_base64", base64_data)
    r.addBodyPara("typeId", "34")
    r.addBodyPara("convert_to_jpg", "0")
    r.addBodyPara("needMorePrecise", "1")
    # r.addFilePara("img",r"/Users/sunjian/Desktop/wool/chain/img/code.jpg") #文件上传时设置
    res = r.post()
    res_text =  res.text  # 返回信息
    a = res_text.encode('utf-8')
    code = search(r'"Result":"(.*?)"',a)
    return code


bac = open('coinclub_bac','a')

def coinclub(n,mail,eth):

    try:
        # newip = get_ip()
        newip = get_zhima_ip()

        host = search('(\d+\.\d+\.\d+\.\d+):',newip)
        port = int(search(':(\d+)$',newip))

        profile = webdriver.FirefoxProfile()
        profile.set_preference("network.proxy.type", 1);
        profile.set_preference("network.proxy.socks_version", 5);
        profile.set_preference("network.proxy.socks", host);
        profile.set_preference("network.proxy.socks_port", port);
        profile.update_preferences()
        browser = webdriver.Firefox(firefox_profile=profile)
    except:
        profile = webdriver.FirefoxProfile()
        browser = webdriver.Firefox()


    profile = webdriver.FirefoxProfile()
    browser = webdriver.Firefox()

    # try:

    print '@@@@@@@@@@@@ 第%s次执行 @@@@@@@@@@@@' % n

    # 输入coinclub邀请网址
    print '>>> 打开coinclub url'
    browser.implicitly_wait(20)
    browser.get(get_url())
    time.sleep(3)

    # 输入eth地址
    print '>>> 输入ETH钱包地址'
    browser.find_element_by_xpath("/html/body/div/form/div[4]/div[2]/input[1]").send_keys(eth)
    time.sleep(3)



    # 对当前屏幕截图
    print '>>> 截屏'
    browser.get_screenshot_as_file('./img/1.jpg')
    time.sleep(3)

    # 定位验证码坐标&截图获取验证码图片
    print '>>> 裁剪验证码图片'
    location = browser.find_element_by_id('myCanvas').location
    size = browser.find_element_by_id('myCanvas').size
    left = int(location['x'])
    top = int(location['y'])
    right = int(location['x']) + int(size['width'])
    bottom = int(location['y']) + int(size['height'])

    a = Image.open("./img/1.jpg")
    im = a.crop((left, top, right, bottom))
    im.save('./img/code.jpg')

    # 识别验证码
    print '>>> 识别验证码'
    # 验证码图片转为base64编码
    with open("./img/code.jpg", "rb") as f:
        # b64encode是编码,b64decode是解码
        base64_data = base64.b64encode(f.read())
    authcode = authcode_showapi(base64_data)
    time.sleep(3)

    # 输入验证码
    print '>>> 输入验证码'
    browser.find_element_by_xpath("/html/body/div/form/div[4]/div[2]/input[2]").send_keys(authcode)
    time.sleep(2)

    # 点击提交
    print '>>> 点击提交'
    browser.find_element_by_xpath("/html/body/div/form/div[4]/div[2]/button").click()
    time.sleep(6)

    # 提交邮箱
    print '>>> 提交邮箱'
    browser.find_element_by_xpath("/html/body/div/div/div[4]/div[2]/div/input[3]").send_keys(mail)
    time.sleep(1)
    browser.find_element_by_xpath("/html/body/div/div/div[4]/div[2]/div/a").click()
    time.sleep(2)

    # 获取手机号
    print '>>> 获取手机号&提交'
    mobile = gain_mobile()
    time.sleep(1)
    browser.find_element_by_xpath("/html/body/div/div/div[4]/div[3]/div/input[3]").send_keys(mobile)
    time.sleep(1)
    browser.find_element_by_xpath("/html/body/div/div/div[4]/div[3]/div/a").click()
    time.sleep(2)

    # 提取电报验证码
    print '>>> 提取telegram验证码'
    html = browser.page_source
    print html

    time.sleep(600)


    '''关闭浏览器'''
    browser.delete_all_cookies()
    browser.quit()

    # except Exception,e:
    #     print repr(e)

        # browser.delete_all_cookies()    
        # browser.quit()


def get_name():
    a = random.randrange(1, 50000) #1-9中生成随机数  
    theline = linecache.getline(r'people_name', a).strip()
    return theline.decode("utf-8")

def get_url():
    url_list = [
        "https://www.coinclub.global/airdrop/PTc1v5mdDPZIhxXt1rio",
    ]
    slice = random.sample(url_list,1)[0]
    return slice


mails = open("mail_163").readlines()
eths = open("eth_adress").readlines()

for i in range(1,501):
    email = mails[i].split('&')[0]
    eth = eths[i]

    print email,eth

# coinclub(1,email,eth)

ShowapiRequest.py

import requests,sys
import urllib
#from urllib import parse
from urlparse import urlparse




files = {}
headers = {}
body = {}
timeouts = {}
resHeader = {}

class ShowapiRequest:
    def __init__(self, url, my_appId, my_appSecret):
        self.url = url
        self.my_appId = my_appId
        self.my_appSecret = my_appSecret
        body["showapi_appid"] = my_appId
        body["showapi_sign"] = my_appSecret
        headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2427.7 Safari/537.36"

    def addFilePara(self, key, value_url):
        files[key] = open(r"%s" % (value_url), 'rb')
        return self

    def addHeadPara(self, key, value):
        headers[key] = value
        return self

    def addBodyPara(self, key, value):
        body[key] = value
        return self

    def setTimeout(self, connecttimout, readtimeout):
        timeouts["connecttimout"] = connecttimout
        timeouts["readtimeout"] = readtimeout
        return self


    def get(self):
        get_url = self.url + "?" + urllib.urlencode(body)
        if not timeouts:
            res = requests.get(get_url, headers=headers)
        else:
            timeout = (timeouts["connecttimout"], timeouts["readtimeout"])
            res = requests.get(get_url, headers=headers, timeout=timeouts)
        return res

    def post(self):
        if not timeouts:
            res = requests.post(self.url, files=files, data=body, headers=headers)
        else:
            timeout = (timeouts["connecttimout"], timeouts["readtimeout"])
            res = requests.post(self.url, files=files, data=body, headers=headers, timeout=timeout)
        return res

你可能感兴趣的:(N久之前的刷数字币羊毛脚本)