全球主机交流论坛

标题: 发现一个不错的python脚本,就是运行有点麻烦 [打印本页]

作者: etc    时间: 2020-1-29 23:23
标题: 发现一个不错的python脚本,就是运行有点麻烦
没折腾明白

https://www.52pojie.cn/thread-996573-1-1.html

  1. # coding = utf-8
  2. # 以下代码仅供参考讨论,请勿用作其它非法用途
  3. # www.52pojie.cn

  4. # python 3.7
  5. # @Author:iknew

  6. from bs4 import BeautifulSoup as bs
  7. from selenium import webdriver
  8. from selenium.webdriver.chrome.options import Options
  9. import selenium
  10. import time
  11. import csv
  12. import random
  13. from mock_useragent import UserAgent

  14. ‘’‘1. 设置临时邮箱
  15. 2. 填写注册信息
  16. 3. 等待验证
  17. 4. 填写验证码
  18. 5. 完成注册
  19. ’‘’

  20. def sign_up(name,pwd):
  21.     global element
  22.     email = name + '@t.odmail.cn'

  23.     url = 'https://t.odmail.cn/'
  24.     code = ''
  25.     browser.get(url)
  26.     time.sleep(3)
  27.     try:
  28.         browser.implicitly_wait(15)
  29.         element = browser.find_element_by_id('customShortid')
  30.     except selenium.common.exceptions.NoSuchElementException:
  31.         print('网页加载不出来')
  32.         sign_up(name,pwd)
  33.     element.click()
  34.     browser.implicitly_wait(5)
  35.     browser.find_element_by_id('shortid').send_keys(name)
  36.     browser.implicitly_wait(5)
  37.     element.click()
  38.     print('email set up ...')
  39.     # browser.execute_script(js)
  40.     js = 'window.open("https://signup.microsoft.com/signup/index?sku=faculty");'
  41.     browser.execute_script(js)
  42.     windows = browser.window_handles
  43.     browser.switch_to.window(windows[1])
  44.     browser.implicitly_wait(30)
  45.     browser.find_element_by_id("StepsData_Email").send_keys(email)
  46.     browser.implicitly_wait(2)
  47.     browser.find_element_by_class_name('mpl-button-box-text').click()
  48.     browser.switch_to.window(windows[0])
  49.     print('waiting for verification code ...')

  50.     while code == '':
  51.         time.sleep(3)
  52.         browser.find_element_by_id('maillist')
  53.         r = browser.find_element_by_id('maillist').text
  54.         code = r[49:55]
  55.     print('Got the verification code:{}\n'.format(code))
  56.     browser.implicitly_wait(10)
  57.     #切换窗口到注册页面填写信息、验证码:
  58.     browser.switch_to.window(windows[1])
  59.     browser.implicitly_wait(20)
  60.     try:   
  61.         element = browser.find_element_by_class_name('last-name')
  62.         element.send_keys('o')
  63.     except selenium.common.exceptions.ElementNotInteractableException: browser.quit()
  64.     browser.implicitly_wait(5)
  65.     browser.find_element_by_class_name('first-name').send_keys('o')
  66.     browser.implicitly_wait(5)
  67.     browser.find_element_by_id('Password').send_keys(pwd)
  68.     browser.implicitly_wait(5)
  69.     browser.find_element_by_id('RePassword').send_keys(pwd)
  70.     browser.implicitly_wait(5)
  71.     browser.find_element_by_id('SignupCode').send_keys(code)
  72.     browser.implicitly_wait(10)
  73.     browser.find_element_by_class_name('mpl-button-box-text').click()
  74.     print('注册的账号密码:{0},{1},  验证码:{2}\n'.format(email,pwd,code))
  75.     try:   
  76.         browser.implicitly_wait(20)
  77.         element = browser.find_element_by_class_name('ms-fcl-tp')
  78.         element.click()
  79.     except selenium.common.exceptions.StaleElementReferenceException:
  80.         browser.refresh()
  81.     return [email,pwd]

  82. ’‘’1. 注册名称设置2. selenium参数设置
  83. 3. 调用sign_up()
  84. 4. 注册后的账号密码写入文件
  85. '''
  86. def main():
  87.     global browser
  88.     n = 0
  89.     for i in range(1,1000):  #   设置注册ID范围,程序中断需要手动修改起始位置...        
  90.         name = '这里填你想要的名称'+str(i)  
  91.         pwd = 'One.'+str(random.randint(1000,9990))

  92.         t = time.time()
  93.         agent = UserAgent.random_chrome
  94.         options = Options()
  95.         options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])#避免一些无关紧要的报错
  96.         options.add_argument('--user-agent={}'.format(agent))
  97.         options.add_argument('--ignore-certificate-errors')
  98.         options.add_argument('--ignore-ssl-errors')
  99.         options.add_argument('--start-maximized')   #窗口最大化,感觉不太需要
  100.         options.add_argument('--window-size=1920,1080')#设置窗口大小
  101.         options.add_argument('--headless')          # 后台运行,可注释掉查看自动注册流程
  102.         browser = webdriver.Chrome(chrome_options= options)
  103. #调用sign_up函数注册
  104.         user = sign_up(name,pwd)
  105.         f = open('onedrive.csv','a',newline='')
  106.         writer = csv.writer(f)
  107.         f.seek(0,2)
  108.         writer.writerow(user)
  109.         f.close()
  110.         n += 1
  111.         print('Time now:{0}'.format(time.strftime("%Y%m%d %X", time.localtime())))
  112.         print('注册第 "{}"个用时:{:.2f} 秒'.format(n,time.time()-t),end='\n---------------------')
  113.         browser.quit()
  114.         if n % 20 == 0 :
  115.             print('休息10分钟,避免IP被封')
  116.             time.sleep(600)

  117. if __name__ == "__main__":
  118.     main()
复制代码


(, 下载次数: 17)


作者: h2o    时间: 2020-1-29 23:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: wolfewong    时间: 2020-1-29 23:34
粗略看了一下,就是用临时邮箱批量注册onedrive,如果临时邮箱是自己的还好,如果是别人的,相当于薅羊毛了,很容易薅死羊的
作者: jinx    时间: 2020-1-30 09:27
人均管理员,这玩意没用




欢迎光临 全球主机交流论坛 (https://loc.010206.xyz/) Powered by Discuz! X3.4