├── .gitignore ├── README.md └── fish.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | .idea 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 概述 2 | 这是一个薅区块鱼羊毛的脚本,通过模拟用户注册、激活,来完成模拟用户邀请 3 | 4 | ## 运行环境要求 5 | - 一个临时邮箱服务:我这地方选用的是[YOPmail](http://www.yopmail.com/zh/) 6 | - Python 7 | - chrome webdriver 8 | - selenium 9 | - iterm2(安装imgcat 工具): 因为要输入验证码,所以选用iterm2,这样可以把验证码图片输出到终端。 10 | 11 | ## 我的测试环境 12 | - Mac+Python2.7+iTerm2+imgcat 13 | 14 | ## 文档 15 | [点击查看](http://www.bugcode.cn/catch_fish.html) 16 | -------------------------------------------------------------------------------- /fish.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | 3 | import os 4 | import time 5 | import random 6 | import string 7 | import base64 8 | from selenium import webdriver 9 | 10 | nums = 10 11 | # imgcat命令绝对路径 12 | imgcat = '/usr/local/bin/imgcat' 13 | path = os.path.abspath(__file__) 14 | 15 | # 验证码图片存放路径 16 | image_path = os.path.join(os.path.dirname(path), 'test.jpg') 17 | 18 | options = webdriver.ChromeOptions() 19 | 20 | # 设置代理 21 | options.add_argument('--proxy-server=http://127.0.0.1:1087') 22 | 23 | driver = webdriver.Chrome(options=options) 24 | 25 | # 定义模拟邀请的人数 26 | for i in range(0, nums): 27 | driver.get('http://www.yopmail.com/zh/email-generator.php') 28 | time.sleep(1) 29 | email = driver.find_element_by_id("login") 30 | email = email.get_attribute('value') 31 | 32 | # 打开邀请注册的链接 33 | driver.get('http://my.fishbank.io/go/122169') 34 | time.sleep(1) 35 | login_btn = driver.find_element_by_css_selector('.button.red.bigrounded.big') 36 | login_btn.click() 37 | driver.get('https://my.fishbank.io/register') 38 | time.sleep(1) 39 | email_input = driver.find_element_by_id('user_email') 40 | password_one = driver.find_element_by_id('user_plainPassword_first') 41 | password_two = driver.find_element_by_id('user_plainPassword_second') 42 | cap_input = driver.find_element_by_id('user_captcha') 43 | register_btn = driver.find_element_by_css_selector('.button.green.bigrounded.mid') 44 | 45 | cap = driver.find_element_by_class_name('captcha_image') 46 | with open(image_path, 'wb') as fi: 47 | fi.write(base64.b64decode(cap.get_attribute('src').split(',')[1])) 48 | os.system(imgcat+' '+image_path) 49 | code = input('输入验证码') 50 | 51 | password = ''.join(random.sample(string.ascii_letters+string.digits, 10)) 52 | email_input.send_keys(email) 53 | password_one.send_keys(password) 54 | password_two.send_keys(password) 55 | cap_input.send_keys(code) 56 | time.sleep(2) 57 | register_btn.click() 58 | 59 | time.sleep(1) 60 | driver.get('http://www.yopmail.com/zh/') 61 | time.sleep(1) 62 | email_input = driver.find_element_by_id('login') 63 | check_btn = driver.find_element_by_class_name('sbut') 64 | email_input.send_keys(email) 65 | check_btn.click() 66 | driver.switch_to_frame(driver.find_element_by_id('ifmail')) 67 | try: 68 | html = driver.find_element_by_id('mailmillieu') 69 | except Exception as e: 70 | input('遇到机器识别的问题,切换到浏览器点击一下,验证完敲一下回车') 71 | html = driver.find_element_by_id('mailmillieu') 72 | html = html.text 73 | active_url = html.split('account:')[1].strip() 74 | driver.get(active_url) 75 | time.sleep(1) 76 | driver.delete_all_cookies() 77 | time.sleep(1) 78 | driver.close() 79 | 80 | --------------------------------------------------------------------------------