├── acc_data ├── .DS_Store ├── __pycache__ ├── dic.cpython-35.pyc ├── dic.cpython-36.pyc ├── data.cpython-36.pyc ├── login.cpython-36.pyc ├── proxy.cpython-35.pyc ├── proxy.cpython-36.pyc ├── test.cpython-35.pyc ├── emailget.cpython-35.pyc ├── function.cpython-36.pyc ├── get_pic.cpython-35.pyc ├── register.cpython-36.pyc ├── account_info.cpython-35.pyc └── account_info.cpython-36.pyc ├── cookiefile ├── .vscode └── settings.json ├── account_info.py ├── main.py ├── data.py ├── login.py ├── function.py ├── get_pic.py ├── proxy.py ├── register.py └── ins.py /acc_data: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/.DS_Store -------------------------------------------------------------------------------- /__pycache__/dic.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/dic.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/dic.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/dic.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/data.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/data.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/login.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/login.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/proxy.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/proxy.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/proxy.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/proxy.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/test.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/test.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/emailget.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/emailget.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/function.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/function.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/get_pic.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/get_pic.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/register.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/register.cpython-36.pyc -------------------------------------------------------------------------------- /cookiefile: -------------------------------------------------------------------------------- 1 | {"csrftoken": "LIcclijTm8GoRvlRqidp49B3BdN1OXvW", "mcd": "3", "mid": "W92g2gAEAAG_LnwRDGmGTV56-Mip", "rur": "PRN"} -------------------------------------------------------------------------------- /__pycache__/account_info.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/account_info.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/account_info.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/E0han/ins-account/HEAD/__pycache__/account_info.cpython-36.pyc -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.linting.pylintEnabled": false, 3 | "python.pythonPath": "C:\\Users\\ethan\\AppData\\Local\\Programs\\Python\\Python36\\python.exe" 4 | } -------------------------------------------------------------------------------- /account_info.py: -------------------------------------------------------------------------------- 1 | #emailadress:password 2 | account=[ 3 | ['Williamithbuser467','Williampassword'] 4 | ] 5 | ['Jacobanseveuser1910','Jacobpassword'], 6 | ['EthanInstantno18495','Ethanpassword'], -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | from function import functions 2 | from register import register 3 | from proxy import proxy_pool, get_one_from_pool 4 | from login import login 5 | import requests 6 | 7 | ses=requests.session() 8 | pool=proxy_pool(1) 9 | proxy_use=get_one_from_pool(pool) 10 | print(proxy_use) 11 | logintest=login(proxy_use, [['test','test!']], ses) 12 | logintest.run() 13 | #fo=functions(proxy_use,ses) 14 | #fo.follow(['judycin04']) -------------------------------------------------------------------------------- /data.py: -------------------------------------------------------------------------------- 1 | header={ 2 | "Accept":"*/*", 3 | "accept-encoding":"gzip, deflate, br", 4 | "Content-Type":"application/x-www-form-urlencoded", 5 | "cookie":None, 6 | "accept-language":"zh-CN,zh;q=0.8,en;q=0.6", 7 | "origin":"https://www.instagram.com", 8 | "referer":"https://www.instagram.com/", 9 | "user-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36", 10 | "X-csrftoken":None, 11 | "X-Requested-With":"XMLHttpRequest", 12 | } 13 | name={ 14 | "name":["James","Oliver","William","Jack","Noah","Thomas","Lucas","Isaac","Ethan","Alexander","Jacob","Lachlan","Samuel","Harrison","Joshua","Habs","Dirish","JackJones",], 15 | "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36" 16 | } -------------------------------------------------------------------------------- /login.py: -------------------------------------------------------------------------------- 1 | #ins robots, main script 2 | #coding='utf-8' 3 | #__author__=='0han' 4 | #__email__=='0han@protonmail.com' 5 | #__data__=='2017.8' 6 | import requests,re,json,time,os,os.path,sys 7 | from data import header, name 8 | from random import randint 9 | from bs4 import BeautifulSoup 10 | from proxy import proxy_pool 11 | #数据 12 | class login(object): 13 | def __init__(self, proxy, accountlist, session): 14 | self.list=accountlist 15 | self.proxy=proxy 16 | self._session=session 17 | def run(self): 18 | self._session.get('https://www.instagram.com',verify=True)#proxies=self.proxy 19 | self.save_cookies() 20 | header['cookie']=str(self.read_cookies())[1:-2] 21 | header['X-csrftoken']=self.read_cookies()["csrftoken"] 22 | self.login() 23 | def login(self): 24 | for i in self.list: 25 | self.u_name=i[0] 26 | self.passwd=i[1] 27 | payload=self.create_ajax() 28 | r = self._session.post('https://www.instagram.com/accounts/login/ajax/',data=payload,headers=header,verify=True)#proxies=self.proxy 29 | if r.ok==True: 30 | self.save_cookies() 31 | print("[*] Sucessful log in to the",self.u_name) 32 | else: 33 | print("[x] Unknown Error Occurs!") 34 | def create_ajax(self): 35 | r_data={ 36 | 'username':self.u_name,#username 37 | 'password': self.passwd,#password 38 | } 39 | return r_data 40 | def save_cookies(self): 41 | with open('./'+"cookiefile",'w')as f: 42 | json.dump(self._session.cookies.get_dict(),f)#_session.cookies.save() 43 | def read_cookies(self): 44 | #_session.cookies.load() 45 | #_session.headers.update(header_data) 46 | with open('./'+'cookiefile')as f: 47 | cookie=json.load(f) 48 | self._session.cookies.update(cookie) 49 | return cookie 50 | -------------------------------------------------------------------------------- /function.py: -------------------------------------------------------------------------------- 1 | #login and function 2 | import account_info 3 | import requests,re,json,time,os,os.path,sys 4 | from data import header, name 5 | from random import randint 6 | from bs4 import BeautifulSoup 7 | from proxy import proxy_pool 8 | #数据 9 | user_list=account_info.account 10 | class functions(): 11 | def __init__(self,proxy,session): 12 | self.proxy=proxy 13 | self._session=session 14 | def like(self): 15 | likeurl="https://www.instagram.com/web/likes/1781561095543136899/like/" 16 | def follow(self,userid): 17 | for i in userid: 18 | header['cookie']=str(self.read_cookies())[1:-2] 19 | header['X-csrftoken']=self.read_cookies()["csrftoken"] 20 | self.id=self.get_userid(i) 21 | header['refer']=self.user_profile 22 | followurl="https://www.instagram.com/web/friendships/"+self.id+"/follow/" 23 | r = self._session.post(followurl,headers=header,verify=True) 24 | print(r) 25 | #proxies=self.proxy 26 | if r.ok==True: 27 | print("[*] Sucessful follow the user",i) 28 | self._session.close() 29 | else: 30 | self._session.close() 31 | print("[x] Unknown Error Occurs!") 32 | def get_userid(self,userid): 33 | self.user_profile="https://www.instagram.com/"+str(userid)+'/' 34 | r = self._session.get(self.user_profile,verify=True)#proxies=self.proxy 35 | id=r.text.split('\",\"show_suggested_profiles')[0].split('profilePage_')[-1] 36 | return id 37 | 38 | def save_cookies(self): 39 | global _session 40 | with open('./'+"cookiefile",'w')as f: 41 | json.dump(self._session.cookies.get_dict(),f)#_session.cookies.save() 42 | def read_cookies(self): 43 | #_session.cookies.load() 44 | #_session.headers.update(header_data) 45 | with open('./'+'cookiefile')as f: 46 | cookie=json.load(f) 47 | self._session.cookies.update(cookie) 48 | return cookie -------------------------------------------------------------------------------- /get_pic.py: -------------------------------------------------------------------------------- 1 | #get pictures from plxabay.com 2 | #coding='utf-8' 3 | #__author__=='0han' 4 | #__email__=='0han@protonmail.com' 5 | #__data__=='2017.8' 6 | import requests 7 | import json 8 | import os 9 | from random import randint 10 | class get_pic(object): 11 | def __init__(self): 12 | self.key="6200454-44e39a368568209aa387741e5" 13 | def get_selfie(self): 14 | print("==Getting-selfie-pictures==") 15 | self.s_url=s_url="https://pixabay.com/api/?key="+self.key+"&q="+"people" 16 | try: 17 | r=requests.get(self.s_url,verify=True) 18 | dict_2 =json.loads(r.text) 19 | self.selfie_url=dict_2["hits"][randint(1,6)]["webformatURL"] 20 | self.download_pic("selfie") 21 | except requests.exceptions.SSLError: 22 | print("\n[x] SSL-Error!\n[!] Pls changing your network environment\n") 23 | 24 | def get_post_pic(self): 25 | print("==Getting-post-pictures==") 26 | self.s_url=s_url="https://pixabay.com/api/?key="+self.key+"&q="+"music" 27 | try: 28 | r=requests.get(self.s_url,verify=True) 29 | dict_2 =json.loads(r.text) 30 | self.selfie_url=dict_2["hits"][randint(1,6)]["webformatURL"] 31 | self.download_pic("PostPic") 32 | except requests.exceptions.SSLError: 33 | print("\n[x] SSL-Error!\n[!] Pls changing your network environment\n") 34 | 35 | def download_pic(self,first_path): 36 | #input first_path(selfie or post_pictures) & selfie_url 37 | if(os.path.exists(first_path)): 38 | print("[-] 打开"+first_path+"目录") 39 | 40 | else: 41 | path=os.mkdir(first_path) 42 | pic_url=self.selfie_url 43 | down_pic=requests.get(pic_url,verify=True) 44 | with open(first_path+'/1.jpg',"wb") as file: 45 | file.write(down_pic.content) 46 | def delete_local_pic(self,path): 47 | os.remove(path)#path should looks like '/selfie/1.jpg' 48 | -------------------------------------------------------------------------------- /proxy.py: -------------------------------------------------------------------------------- 1 | #Proxy Module for collecting proxy ip and put them into a pool 2 | #__data__=='16/5/2018' 3 | #utf-8 4 | import requests 5 | import json 6 | from random import randint 7 | """ 8 | The function proxy_pool is going to take an argument which indicates the amount 9 | of the ip proxy addresses you want to have in the pool and return a list that contains 10 | ip proxyies without overloop. 11 | """ 12 | def proxy_pool(amount_of_ip): 13 | pool=[] 14 | print("[*] Get",str(amount_of_ip),"Annoymous IP Proxy") 15 | mainurl="https://gimmeproxy.com/api/getProxy?get=true&anonymityLevel=1&supportsHttps=True&maxCheckPeriod=3600" 16 | for i in range(amount_of_ip): 17 | s=requests.session() 18 | r=json.loads(s.get(mainurl,verify=True).text) 19 | res='https://'+r['ipPort'] 20 | s.close() 21 | if res not in pool: 22 | pool.append(res) 23 | else: 24 | print("[!] IP proxy address ",r['ipPort'],"is already in the pool") 25 | continue 26 | return pool # pool here is a list contains n's (the amount you indicate) ip in the form like "https://80.211.184.190:8888" 27 | """ 28 | This internal function will get a random proxy ip from the pool which take as an argument 29 | """ 30 | def get_one_from_pool(pool): 31 | res={} 32 | ipPool = pool 33 | res['https']=ipPool[randint(0,len(pool)-1)] 34 | return res 35 | """ 36 | The test function is used to get a random ip from the pool and test whether it useable 37 | 测试模块,在项目中可参看内置函数return_random_ipproxy的用法,从pool代理池中随机提取一个作为代理ip 38 | """ 39 | def test(): 40 | def return_random_ipproxy(pool,num): 41 | res={} 42 | ipPool = pool 43 | res['https']=ipPool[randint(0,num-1)] 44 | return res 45 | ipPool=return_random_ipproxy(proxy_pool(5),5) 46 | print(ipPool) 47 | urlforlocalip='https://api.ipify.org?format=json' 48 | s=requests.session() 49 | try: 50 | res=s.get(urlforlocalip,proxies=ipPool,verify=True) 51 | dic=json.loads(res.text) 52 | print("[+] Your local ip address is",dic["ip"]) 53 | except:#the ProxyError is not defined yet, therefore, be carefull about this 54 | print("Can not connect to the ip proxy") -------------------------------------------------------------------------------- /register.py: -------------------------------------------------------------------------------- 1 | #register module 2 | #coding='utf-8' 3 | #__author__=='0han' 4 | #__email__=='0han@protonmail.com' 5 | #__data__=='17/5/2018' 6 | import requests,re,json,time,os,os.path,sys 7 | from data import header, name 8 | from random import randint 9 | from bs4 import BeautifulSoup 10 | from proxy import proxy_pool 11 | 12 | class register(): 13 | def __init__(self,proxy,session): 14 | #ipproxy,num 15 | self.proxy=proxy 16 | self._session=session 17 | print("==Instagram-accounts-generator==\n[*] start")#可以删除 deletable 18 | def run(self): 19 | self._session.get('https://www.instagram.com',proxies=self.proxy,verify=True) 20 | self.save_cookies() 21 | header['cookie']=str(self.read_cookies())[1:-2] 22 | header['X-csrftoken']=self.read_cookies()["csrftoken"] 23 | self.data=self.create_ajax() 24 | self.ins() 25 | time.sleep(5) 26 | def ins(self): 27 | global _session 28 | r = self._session.post('https://www.instagram.com/accounts/web_create_ajax/',data=self.data,proxies=self.proxy,headers=header,verify=True) 29 | if r.ok==True: 30 | print("[*] Sucessful create an account") 31 | self.save_account_info(self.u_name,self.passwd) 32 | _session.close() 33 | else: 34 | _session.close() 35 | print("[x] Unknown Error Occurs!") 36 | 37 | """ 38 | The method create_ajax(self) will return a ajax payload form which used to post to account creatation 39 | """ 40 | def create_ajax(self): 41 | def get_emailaddress(): 42 | r=requests.get("https://10minutemail.net",verify=True) 43 | r.encoding='utf-8' 44 | soup = BeautifulSoup(r.text, 'html.parser') 45 | return soup.input["value"] 46 | def generate_FullName(): 47 | nameList=name['name']#储存在dic里的姓名数据 48 | namefornow=nameList[randint(1,12)] 49 | return namefornow 50 | def create_username(): 51 | data={'keyword':self.f_name,"numlines":"70","formsubmit":"Generate Username"} 52 | r=requests.post("http://namegenerators.org/username-generator/",data=data,verify=True) 53 | r.encoding='utf-8' 54 | soup=BeautifulSoup(r.text,'html.parser') 55 | result=soup.select(".section > div:nth-of-type("+str(randint(1,69))+")")[0].string 56 | result=str(result)+"no"+str(randint(1,20000)) 57 | return result 58 | self.email=get_emailaddress() 59 | self.f_name=generate_FullName() 60 | self.passwd=self.f_name+'password' 61 | self.u_name=create_username() 62 | r_data={ 63 | 'email': self.email, #email for register 64 | 'password': self.passwd,#password 65 | 'username':self.u_name,# 66 | 'first_name': self.f_name,#全名 67 | 'seamless_login_enabled': 1, 68 | 'tos_version': 'row' 69 | } 70 | return r_data 71 | def save_cookies(self): 72 | global _session 73 | with open('./'+"cookiefile",'w')as f: 74 | json.dump(self._session.cookies.get_dict(),f)#_session.cookies.save() 75 | def read_cookies(self): 76 | #_session.cookies.load() 77 | #_session.headers.update(header_data) 78 | with open('./'+'cookiefile')as f: 79 | cookie=json.load(f) 80 | self._session.cookies.update(cookie) 81 | return cookie 82 | """ 83 | This internal function will get a random proxy ip from the pool which take as an argument 84 | """ 85 | def get_one_from_pool(self,pool,num): 86 | res={} 87 | ipPool = pool 88 | res['https']=ipPool[randint(0,num)] 89 | return res 90 | def save_account_info(self,username,password): 91 | with open("account_info.py", "a+") as a: 92 | a.write("\n['"+username+"','"+password+"'],") 93 | -------------------------------------------------------------------------------- /ins.py: -------------------------------------------------------------------------------- 1 | #ins robots, main script 2 | #coding='utf-8' 3 | #__author__=='0han' 4 | #__email__=='0han@protonmail.com' 5 | #__data__=='2017.8' 6 | import requests,re,json,time,os,os.path,sys 7 | from random import * 8 | from bs4 import BeautifulSoup 9 | import proxy 10 | import dic 11 | import get_pic 12 | #数据 13 | 14 | class register(): 15 | _session=None 16 | 17 | def __init__(self): 18 | self.use_proxy=proxy.get_proxy("US") 19 | print("==Instagram-robots-account-generate==\n[*] start")#可以删除 20 | 21 | def first_get(self): 22 | global _session 23 | _session=requests.session() 24 | main_url='https://www.instagram.com' 25 | _session.get(main_url,proxies=self.use_proxy,verify=True) 26 | self.save_cookies() 27 | if os.path.exists('cookiefile'):#print('have cookies') 28 | self.csrf=self.read_cookies() 29 | self.data=self.create_ajax() 30 | print(self.data) 31 | self.ins() 32 | time.sleep(5)#wait for 5 seconds 33 | self.my_selfie=get_pic.get_pic()#实例化——头像-轮子 34 | self.my_selfie.get_selfie()#download random selfie picture to local folder 35 | self.upload()#upload the selfie 36 | else: 37 | pass 38 | def get_emailaddress(self):#获取新的邮箱地址 39 | email_url="https://10minutemail.net" 40 | r=requests.get(email_url,verify=True) 41 | r.encoding='utf-8' 42 | soup = BeautifulSoup(r.text, 'html.parser') 43 | return soup.input["value"] 44 | def generate_FullName(self): 45 | nameList=dic.data['name']#储存在dic里的姓名数据 46 | name=nameList[randint(1,12)] 47 | return name 48 | def create_username(self): 49 | username_url="http://namegenerators.org/username-generator/" 50 | data={'keyword':self.f_name,"numlines":"70","formsubmit":"Generate Username"} 51 | r=requests.post(username_url,data=data,verify=True) 52 | r.encoding='utf-8' 53 | soup=BeautifulSoup(r.text,'html.parser') 54 | result=soup.select(".section > div:nth-of-type("+str(randint(1,69))+")")[0].string 55 | result=str(result)+"user"+str(randint(1,2000)) 56 | return result 57 | 58 | def create_ajax(self): 59 | self.email=self.get_emailaddress() 60 | self.f_name=self.generate_FullName() 61 | self.passwd=self.f_name+'password' 62 | self.u_name=self.create_username() 63 | r_data={ 64 | 'email': self.email, #注册邮箱 65 | 'password': self.passwd,#密码 66 | 'username':self.u_name,#账号(不能重复) 67 | 'first_name': self.f_name#全名 68 | } 69 | return r_data 70 | def save_cookies(self): 71 | global _session,path_for 72 | with open('./'+"cookiefile",'w')as f: 73 | json.dump(_session.cookies.get_dict(),f)#_session.cookies.save() 74 | def read_cookies(self): 75 | global _session,path_for 76 | #_session.cookies.load() 77 | #_session.headers.update(header_data) 78 | with open('./'+'cookiefile')as f: 79 | cookie=json.load(f) 80 | _session.cookies.update(cookie) 81 | return cookie["csrftoken"] 82 | def save_account_info(self,username,password): 83 | with open("account_info.py", "a+") as a: 84 | a.write("\n['"+username+"','"+password+"'],") 85 | print("[*] Successful save the account info") 86 | def upload(self): 87 | global _session 88 | file={"file":open("selfie/1.jpg","rb")} 89 | post_selfie_url="https://www.instagram.com/accounts/web_change_profile_picture/" 90 | data={ 91 | "Content-Disposition":["form-data","name='profile_pic'","filename='profilepic.jpg'"], 92 | "Content-Type":"image/jpg" 93 | } 94 | header={ 95 | "Accept":"*/*", 96 | "accept-encoding":"gzip, deflate, br", 97 | "Content-Type":"multipart/form-data; boundary=----WebKitFormBoundaryElZwUj6xt3tDzqBy", 98 | "accept-language":"zh-CN,zh;q=0.8,en;q=0.6", 99 | "origin":"https://www.instagram.com", 100 | "referer":"https://www.instagram.com/", 101 | "user-Agent":dic.data["user_agent"], 102 | "X-csrftoken":self.csrf, 103 | "X-Instagram-AJAX":"1", 104 | "X-Requested-With":"XMLHttpRequest", 105 | } 106 | r=requests.post(post_selfie_url,headers=header,proxies=self.use_proxy,data=data,files=file,verify=True) 107 | print(r) 108 | def ins(self): 109 | global _session 110 | posturl='https://www.instagram.com/accounts/web_create_ajax/' 111 | header={ 112 | "Accept":"*/*", 113 | "accept-encoding":"gzip, deflate, br", 114 | "Content-Type":"application/x-www-form-urlencoded", 115 | "accept-language":"zh-CN,zh;q=0.8,en;q=0.6", 116 | "origin":"https://www.instagram.com", 117 | "referer":"https://www.instagram.com/", 118 | "user-Agent":dic.data["user_agent"], 119 | "X-csrftoken":self.csrf, 120 | "X-Instagram-AJAX":"1", 121 | "X-Requested-With":"XMLHttpRequest", 122 | } 123 | r = _session.post(posturl,data=self.data,headers=header,proxies=self.use_proxy,verify=True)#proxies=self.use_proxy 124 | if r.ok==True: 125 | print("[*] Sucessful create an account") 126 | self.save_account_info(self.u_name,self.passwd) 127 | else: 128 | print("[x] Unknown Error Occurs!") 129 | 130 | test=register() 131 | for i in range(5): 132 | test.first_get() 133 | time.sleep(15) 134 | --------------------------------------------------------------------------------