forked from SniperNFTbot/Opensea-minting-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopensea.py
170 lines (141 loc) · 6.81 KB
/
opensea.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import time
import os
import pathlib
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from webdriver_manager.chrome import ChromeDriverManager
def mint(values, isWindows):
def selectWallet():
print("Accepting terms")
driver.switch_to.window(driver.window_handles[1])
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.XPATH, "//a[@class='sc-1pie21o-0 elyzfO sc-1xf18x6-0 sc-glfma3-0 hiIVBZ eqgvEc']")))
continue__ = driver.find_element(By.XPATH, "//a[@class='sc-1pie21o-0 elyzfO sc-1xf18x6-0 sc-glfma3-0 hiIVBZ eqgvEc']").click()
print("Finished accepting")
def recaptcha(site_key):
print('ReCaptcha sitekey is ' +site_key)
page_url = values[0]
method = "userrecaptcha"
key = values[2]
url = "http://2captcha.com/in.php?key={}&method={}&googlekey={}&pageurl={}".format(key,method,site_key,page_url)
response = requests.get(url)
if response.text[0:2] != 'OK':
quit('Service error. Error code:' + response.text)
captcha_id = response.text[3:]
token_url = "http://2captcha.com/res.php?key={}&action=get&id={}".format(key,captcha_id)
while True:
time.sleep(1)
response = requests.get(token_url)
print(response.text)
if response.text[0:2] == 'OK':
break
captha_results = response.text[3:]
driver.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="";')
driver.execute_script("""document.querySelector('[name="g-recaptcha-response"]').innerHTML='{}'""".format(captha_results))
driver.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="none";')
driver.execute_script("___grecaptcha_cfg.clients[0].X.X.callback(arguments[0]);",captha_results)
accept()
def accept():
print('Accepting in phantom')
original_window = driver.current_window_handle
WebDriverWait(driver, 60).until(EC.number_of_windows_to_be(3))
for window_handle in driver.window_handles:
if window_handle != original_window:
driver.switch_to.window(window_handle)
break
WebDriverWait(driver, 60).until(EC.presence_of_element_located(
(By.XPATH, "//button[contains(text(), 'Approve')]")))
approve = driver.find_element(
By.XPATH, "//button[contains(text(), 'Approve')]")
approve.click()
def yorn():
if values[2] != '':
print('2captcha')
avaitMint()
accept()
else:
print('Manual captcha')
avaitMintManual()
def avaitMintManual():
print("Waiting for Mint")
time.sleep(1)
element = driver.find_element(By.XPATH, "//button[contains(text(),'Mint')]")
prop = element.get_property('disabled')
if prop == False :
element.click()
time.sleep(20)
else:
print("Still waiting")
avaitMintManual()
def avaitMint():
print("Waiting for Mint")
time.sleep(1)
element = driver.find_element(By.XPATH, "//button[contains(text(),'Mint')]")
prop = element.get_property('disabled')
if prop == False :
print('We can mint now')
element.click()
time.sleep(1)
site_key = driver.execute_script("return window.__sidecar_config__.recaptchaSiteKey")
recaptcha(site_key)
else:
print("Still waiting")
avaitMint()
def initWallet():
print("Status - Initializing wallet")
# add wallet to chrome
if driver.current_url != "chrome-extension://gfoeaaijjjdneafnjccohndgdljjoemp/onboarding.html":
driver.switch_to.window(driver.window_handles[0])
if driver.current_url != "chrome-extension://gfoeaaijjjdneafnjccohndgdljjoemp/onboarding.html":
driver.switch_to.window(driver.window_handles[1])
print("Event - switch window")
WebDriverWait(driver, 120).until(EC.presence_of_element_located(
(By.XPATH, "//button[contains(text(),'Use Secret Recovery Phrase')]")))
recovery_phrase = driver.find_element(
By.XPATH, "//button[contains(text(),'Use Secret Recovery Phrase')]").click()
WebDriverWait(driver, 120).until(EC.presence_of_element_located(
(By.XPATH, "//textarea[@placeholder='Secret phrase']")))
text_area = driver.find_element(
By.XPATH, "//textarea[@placeholder='Secret phrase']").send_keys(values[1])
import_btn = driver.find_element(
By.XPATH, "//button[@class='sc-bdfBQB bzlPNH']").click()
WebDriverWait(driver, 120).until(EC.presence_of_element_located(
(By.XPATH, "//input[@placeholder='Password']")))
password1 = driver.find_element(
By.XPATH, "//input[@placeholder='Password']").send_keys(values[2])
password2 = driver.find_element(
By.XPATH, "//input[@placeholder='Confirm Password']").send_keys(values[2])
check_box = driver.find_element(
By.XPATH, "//input[@type='checkbox']").click()
submit = driver.find_element(
By.XPATH, "//button[@type='submit']").click()
WebDriverWait(driver, 120).until(EC.presence_of_element_located(
(By.XPATH, "//button[contains(text(),'Continue')]")))
continue_ = driver.find_element(
By.XPATH, "//button[contains(text(),'Continue')]")
driver.execute_script("arguments[0].click();", continue_)
WebDriverWait(driver, 120).until(EC.presence_of_element_located(
(By.XPATH, "//button[contains(text(),'Finish')]")))
finish = driver.find_element(
By.XPATH, "//button[contains(text(),'Finish')]")
driver.execute_script("arguments[0].click();", finish)
print("Status - Finished Initializing wallet")
driver.switch_to.window(driver.window_handles[0])
print("Finished Initializing wallet")
options = Options()
options.add_extension("Phantom.crx")
options.add_experimental_option("excludeSwitches", ["enable-logging"])
os.environ['WDM8LOCAL'] = '1'
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
print("Found chrome driver")
driver.get(values[0])
main_window = initWallet()
selectWallet()
yorn()
print("Minting Finished")