posting_duo 0.0.70 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/posting_duo.rb +1392 -783
- metadata +2 -2
data/lib/posting_duo.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'glimmer-dsl-libui'
|
2
2
|
require 'selenium-webdriver'
|
3
|
-
|
3
|
+
require 'webdrivers'
|
4
4
|
require 'iconv'
|
5
5
|
require 'nokogiri'
|
6
6
|
require 'open-uri'
|
@@ -20,6 +20,7 @@ require 'auto_click'
|
|
20
20
|
require 'rainbow/refinement'
|
21
21
|
require 'watir'
|
22
22
|
require 'timeout'
|
23
|
+
require 'win32ole'
|
23
24
|
include AutoClickMethods
|
24
25
|
using Rainbow
|
25
26
|
|
@@ -27,42 +28,76 @@ using Rainbow
|
|
27
28
|
|
28
29
|
|
29
30
|
class Naver
|
30
|
-
|
31
|
-
|
31
|
+
def initialize
|
32
|
+
|
33
|
+
begin
|
34
|
+
puts "크롬을 최신 상태로 업데이트 해주세요"
|
35
|
+
puts "크롬 최신 상태가 아닐경우 오류가 발생될수있습니다."
|
36
|
+
Webdrivers.cache_time = 86_400 # 하루로 설정 (기본값: 86_400초)
|
37
|
+
Webdrivers.install_dir = "./" # 크롬드라이버를 수동으로 설치할 경로를 설정
|
38
|
+
Webdrivers::Chromedriver.update
|
39
|
+
puts "chromedriver 자동 다운로드 성공"
|
40
|
+
rescue => e
|
41
|
+
puts "chromedriver 자동 다운로드 실패: #{e.message}"
|
42
|
+
puts "폴더내 크롬드라이버를 사용합니다."
|
43
|
+
puts "크롬드라이버가 오래된 경우 오류 발생될 수 있으며, 만일 오류 발생시 아래 지침을 따라주세요."
|
44
|
+
puts "1.크롬 업데이트 2.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일을 열어 드라이버를 교체하세요."
|
45
|
+
chromedriver_path = './chromedriver.exe' # 수동 경로를 인스턴스 변수로 설정
|
46
|
+
Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def chrome_setup(proxy, board_cookie_dir = "C:/board_cookie")
|
53
|
+
board_cookie_dir = "C:/board_cookie"
|
54
|
+
FileUtils.mkdir_p(board_cookie_dir) unless File.exist?(board_cookie_dir)
|
55
|
+
|
56
|
+
if proxy == ''
|
57
|
+
system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --window-position=0,0 --remote-debugging-port=9222 --user-data-dir=C:/board_cookie --no-first-run --no-default-browser-check --disable-sync https://chromewebstore.google.com/detail/captcha-solver-auto-recog/ifibfemgeogfhoebkmokieepdoobkbpo?hl=ko})
|
58
|
+
else
|
59
|
+
system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --window-position=0,0 --remote-debugging-port=9222 --user-data-dir=C:/board_cookie --proxy-server=#{proxy.to_s.force_encoding('utf-8').to_s} --no-first-run --no-default-browser-check --disable-sync https://chromewebstore.google.com/detail/captcha-solver-auto-recog/ifibfemgeogfhoebkmokieepdoobkbpo?hl=ko})
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
def chrome_start(proxy, board_cookie_dir = "C:/board_cookie")
|
67
|
+
board_cookie_dir = "C:/board_cookie"
|
68
|
+
FileUtils.mkdir_p(board_cookie_dir) unless File.exist?(board_cookie_dir)
|
32
69
|
if proxy == ''
|
33
70
|
begin
|
34
|
-
|
35
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
36
71
|
options = Selenium::WebDriver::Chrome::Options.new
|
37
|
-
options.
|
38
|
-
options.
|
72
|
+
options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
|
73
|
+
#options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
74
|
+
options.add_argument('--disable-sync') # Chrome 동기화 비활성화
|
75
|
+
options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
|
76
|
+
options.add_argument('--no-default-browser-check')
|
39
77
|
options.page_load_strategy = :normal
|
40
|
-
options.timeouts = {
|
78
|
+
options.timeouts = {page_load: 30_000}
|
79
|
+
options.page_load_strategy = 'none'
|
80
|
+
options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
|
41
81
|
options.add_argument('--disable-gpu')
|
42
|
-
options.add_argument('--
|
43
|
-
options.add_argument('user-
|
44
|
-
|
82
|
+
options.add_argument('--remote-debugging-port=9222')
|
83
|
+
options.add_argument('user-data-dir=C:/board_cookie')
|
84
|
+
|
85
|
+
options.add_argument('--disable-save-password-bubble') # 비밀번호 저장 팝업 비활성화
|
86
|
+
options.add_argument('--disable-password-manager') # 비밀번호 관리 비활성화
|
87
|
+
|
45
88
|
options.add_argument('--disable-web-security') # 웹 보안 비활성화
|
46
89
|
options.add_argument('--allow-running-insecure-content') # HTTPS 사이트에서 HTTP 컨텐츠 실행 허용
|
47
|
-
options.add_argument('--no-sandbox') # 샌드박스 모드 비활성화
|
48
|
-
options.exclude_switches = ['enable-automation'] # 자동화 테스트 제거
|
49
90
|
options.add_preference("profile.password_manager_enabled", false) # 비밀번호 관리자 비활성화
|
50
91
|
options.add_preference("credentials_enable_service", false) # 비밀번호 저장 기능 비활성화
|
51
92
|
options.add_preference("profile.default_content_setting_values.notifications", 2) # 알림 차단
|
52
|
-
options.add_argument("--disable-save-password-bubble") # 비밀번호 저장 팝업 차단
|
53
93
|
options.add_argument('--disable-software-rasterizer') # 소프트웨어 렌더링 비활성화
|
54
|
-
|
55
|
-
options.add_argument("--disable-logging")
|
56
|
-
options.add_argument("--silent") # 로그를 최소화 (최소한의 경고만)
|
57
|
-
options.add_argument("--log-level=3") # LogLevel: 3 = ERROR
|
58
|
-
|
94
|
+
|
59
95
|
# 'capabilities'과 'options' 배열로 설정
|
60
96
|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome
|
61
97
|
capabilities["goog:chromeOptions"] = options.as_json
|
62
98
|
|
63
99
|
# Selenium 4에서는 'capabilities'만 사용하는 방식
|
64
100
|
@driver = Selenium::WebDriver.for(:chrome, capabilities: [capabilities, options])
|
65
|
-
|
66
101
|
|
67
102
|
@driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: function(){ return false; }});") # 셀레니움 감지 방지
|
68
103
|
|
@@ -71,35 +106,33 @@ class Naver
|
|
71
106
|
end
|
72
107
|
else
|
73
108
|
begin
|
74
|
-
puts '프록시 연결합니다.......'.magenta
|
75
|
-
puts '프록시 연결시 프록시 서버에 의해 인터넷속도가 낮아질수있어.......'.magenta
|
76
|
-
puts '원활한 작업이 되지않을수있습니다.......'.magenta
|
77
109
|
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
78
110
|
options = Selenium::WebDriver::Chrome::Options.new
|
111
|
+
options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
|
112
|
+
options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
113
|
+
options.add_argument('--disable-sync') # Chrome 동기화 비활성화
|
114
|
+
options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
|
115
|
+
options.add_argument('--no-default-browser-check')
|
79
116
|
options.add_argument '--proxy-server='+proxy.to_s.force_encoding('utf-8').to_s
|
80
|
-
options.add_extension('./crx/free.crx')
|
81
|
-
options.add_extension('./crx/app.crx')
|
82
117
|
options.page_load_strategy = :normal
|
83
|
-
options.timeouts = {
|
118
|
+
options.timeouts = {page_load: 30_000}
|
119
|
+
options.page_load_strategy = 'none'
|
120
|
+
options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
|
84
121
|
options.add_argument('--disable-gpu')
|
85
|
-
options.add_argument('--
|
86
|
-
options.add_argument('user-
|
87
|
-
|
122
|
+
options.add_argument('--remote-debugging-port=9222')
|
123
|
+
options.add_argument('user-data-dir=C:/board_cookie')
|
124
|
+
|
125
|
+
|
126
|
+
options.add_argument('--disable-save-password-bubble') # 비밀번호 저장 팝업 비활성화
|
127
|
+
options.add_argument('--disable-password-manager') # 비밀번호 관리 비활성화
|
128
|
+
|
88
129
|
options.add_argument('--disable-web-security') # 웹 보안 비활성화
|
89
130
|
options.add_argument('--allow-running-insecure-content') # HTTPS 사이트에서 HTTP 컨텐츠 실행 허용
|
90
|
-
options.add_argument('--no-sandbox') # 샌드박스 모드 비활성화
|
91
|
-
options.exclude_switches = ['enable-automation'] # 자동화 테스트 제거
|
92
131
|
options.add_preference("profile.password_manager_enabled", false) # 비밀번호 관리자 비활성화
|
93
132
|
options.add_preference("credentials_enable_service", false) # 비밀번호 저장 기능 비활성화
|
94
133
|
options.add_preference("profile.default_content_setting_values.notifications", 2) # 알림 차단
|
95
|
-
options.add_argument("--disable-save-password-bubble") # 비밀번호 저장 팝업 차단
|
96
134
|
options.add_argument('--disable-software-rasterizer') # 소프트웨어 렌더링 비활성화
|
97
|
-
|
98
|
-
options.add_argument("--disable-logging")
|
99
|
-
options.add_argument("--silent") # 로그를 최소화 (최소한의 경고만)
|
100
|
-
options.add_argument("--log-level=3") # LogLevel: 3 = ERROR
|
101
|
-
|
102
|
-
|
135
|
+
|
103
136
|
# 'capabilities'과 'options' 배열로 설정
|
104
137
|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome
|
105
138
|
capabilities["goog:chromeOptions"] = options.as_json
|
@@ -108,35 +141,36 @@ class Naver
|
|
108
141
|
@driver = Selenium::WebDriver.for(:chrome, capabilities: [capabilities, options])
|
109
142
|
|
110
143
|
@driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: function(){ return false; }});") # 셀레니움 감지 방지
|
111
|
-
|
112
144
|
rescue => e
|
113
145
|
puts e
|
114
146
|
puts 'proxy error...'
|
115
147
|
begin
|
116
148
|
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
117
149
|
options = Selenium::WebDriver::Chrome::Options.new
|
118
|
-
options.
|
119
|
-
options.
|
150
|
+
options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
|
151
|
+
options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
|
152
|
+
options.add_argument('--disable-sync') # Chrome 동기화 비활성화
|
153
|
+
options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
|
154
|
+
options.add_argument('--no-default-browser-check')
|
120
155
|
options.page_load_strategy = :normal
|
121
|
-
options.timeouts = {
|
156
|
+
options.timeouts = {page_load: 30_000}
|
157
|
+
options.page_load_strategy = 'none'
|
158
|
+
options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
|
122
159
|
options.add_argument('--disable-gpu')
|
123
|
-
options.add_argument('--
|
124
|
-
options.add_argument('user-
|
125
|
-
|
160
|
+
options.add_argument('--remote-debugging-port=9222')
|
161
|
+
options.add_argument('user-data-dir=C:/board_cookie')
|
162
|
+
|
163
|
+
options.add_argument('--disable-save-password-bubble') # 비밀번호 저장 팝업 비활성화
|
164
|
+
options.add_argument('--disable-password-manager') # 비밀번호 관리 비활성화
|
165
|
+
|
126
166
|
options.add_argument('--disable-web-security') # 웹 보안 비활성화
|
127
167
|
options.add_argument('--allow-running-insecure-content') # HTTPS 사이트에서 HTTP 컨텐츠 실행 허용
|
128
|
-
options.add_argument('--no-sandbox') # 샌드박스 모드 비활성화
|
129
|
-
options.exclude_switches = ['enable-automation'] # 자동화 테스트 제거
|
130
168
|
options.add_preference("profile.password_manager_enabled", false) # 비밀번호 관리자 비활성화
|
131
169
|
options.add_preference("credentials_enable_service", false) # 비밀번호 저장 기능 비활성화
|
132
170
|
options.add_preference("profile.default_content_setting_values.notifications", 2) # 알림 차단
|
133
|
-
options.add_argument("--disable-save-password-bubble") # 비밀번호 저장 팝업 차단
|
134
171
|
options.add_argument('--disable-software-rasterizer') # 소프트웨어 렌더링 비활성화
|
135
|
-
|
136
|
-
|
137
|
-
options.add_argument("--silent") # 로그를 최소화 (최소한의 경고만)
|
138
|
-
options.add_argument("--log-level=3") # LogLevel: 3 = ERROR
|
139
|
-
|
172
|
+
|
173
|
+
|
140
174
|
# 'capabilities'과 'options' 배열로 설정
|
141
175
|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome
|
142
176
|
capabilities["goog:chromeOptions"] = options.as_json
|
@@ -151,51 +185,407 @@ class Naver
|
|
151
185
|
end
|
152
186
|
end
|
153
187
|
end
|
154
|
-
|
155
|
-
|
156
|
-
def login(proxy)
|
157
|
-
chrome_start(proxy)
|
158
188
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
# 빈 탭만 남기고 나머지 탭 닫기
|
167
|
-
all_windows.each do |window|
|
168
|
-
@driver.switch_to.window(window)
|
169
|
-
current_url = @driver.current_url
|
170
|
-
puts "탭 URL: #{current_url}" # 각 탭 URL 출력
|
189
|
+
def login(proxy, captcha_key, board_cookie_dir = "C:/board_cookie")
|
190
|
+
@captcha_key = captcha_key
|
191
|
+
@board_cookie_dir = "C:/board_cookie"
|
192
|
+
current_dir = File.dirname(__FILE__)
|
193
|
+
board_cookie_dir = "C:/board_cookie"
|
194
|
+
FileUtils.mkdir_p(board_cookie_dir) unless File.exist?(board_cookie_dir)
|
171
195
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
@driver.close # 빈 탭 등 다른 탭은 닫기
|
177
|
-
puts "빈 탭 또는 확장 프로그램이 아닌 탭을 닫았습니다."
|
196
|
+
unless File.exist?(board_cookie_dir)
|
197
|
+
driverfile_src = File.join(current_dir, 'driverfile')
|
198
|
+
if Dir.exist?(driverfile_src)
|
199
|
+
FileUtils.cp_r(driverfile_src, board_cookie_dir)
|
178
200
|
end
|
179
201
|
end
|
180
202
|
|
181
|
-
#
|
182
|
-
|
183
|
-
if all_windows.size == 1
|
184
|
-
@driver.switch_to.window(all_windows.first) # 남은 빈 탭으로 전환
|
185
|
-
puts "빈 탭으로 전환됨."
|
186
|
-
else
|
187
|
-
puts "빈 탭을 찾을 수 없습니다."
|
188
|
-
end
|
203
|
+
# 새로운 스레드 생성 및 실행
|
204
|
+
Thread.new { chrome_setup(proxy, board_cookie_dir) }
|
189
205
|
|
206
|
+
# 충분한 대기 시간을 두고 실행
|
190
207
|
sleep(1)
|
191
208
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
209
|
+
chrome_start(proxy, board_cookie_dir)
|
210
|
+
|
211
|
+
# 열린 모든 탭 핸들 확인
|
212
|
+
all_windows = @driver.window_handles
|
213
|
+
#puts "현재 열려 있는 탭 수: #{all_windows.size}" # 열린 탭 수 출력
|
214
|
+
|
215
|
+
# 원하는 URL
|
216
|
+
target_url = "https://chromewebstore.google.com/detail/captcha-solver-auto-recog/ifibfemgeogfhoebkmokieepdoobkbpo?hl=ko"
|
217
|
+
|
218
|
+
# 각 탭을 순회하면서
|
219
|
+
all_windows.each do |window|
|
220
|
+
@driver.switch_to.window(window)
|
221
|
+
current_url = @driver.current_url
|
222
|
+
#puts "탭 URL: #{current_url}" # 각 탭 URL 출력
|
223
|
+
|
224
|
+
# 원하는 URL이 아니면 탭을 닫기
|
225
|
+
if current_url != target_url
|
226
|
+
begin
|
227
|
+
@driver.close # 다른 탭을 닫기
|
228
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
229
|
+
#puts "탭을 닫는 데 오류 발생: #{e.message}"
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
# 남아 있는 탭으로 전환
|
235
|
+
all_windows = @driver.window_handles # 남은 탭 리스트 갱신
|
236
|
+
if all_windows.size > 0
|
237
|
+
@driver.switch_to.window(all_windows.first) # 남아 있는 첫 번째 탭으로 전환
|
238
|
+
else
|
239
|
+
#puts "남은 탭이 없습니다."
|
240
|
+
end
|
241
|
+
|
242
|
+
|
196
243
|
|
244
|
+
|
245
|
+
sleep(1)
|
246
|
+
begin
|
247
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
248
|
+
wait.until { @driver.find_element(xpath: '//section[@class="lwrbTd"]//button[@jsname="ajZLRd"]') } #추가 되어 있음
|
249
|
+
check_cookie_login = 1
|
250
|
+
puts'[Step.01] CAPTCHA 세션 및 브라우저 설정 완료 상태 확인!!.......'.yellow
|
251
|
+
rescue
|
252
|
+
begin
|
253
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
254
|
+
wait.until { @driver.find_element(xpath: '//section[@class="lwrbTd"]//button[@jsname="wQO0od"]') } #추가 안되어 있음
|
255
|
+
sleep(1.5)
|
256
|
+
@driver.find_element(xpath: '//section[@class="lwrbTd"]//button[@jsname="wQO0od"]').click
|
257
|
+
puts'[Step.01] CAPTCHA 세션 연결 없음!! 브라우저 필요 설정 미 완료 상태!!.......'.red
|
258
|
+
puts'[Step.02] CAPTCHA 세션 연결 및 브라우저 필요 설정 진행 시작!!.......'.red
|
259
|
+
sleep(1.5)
|
260
|
+
shell = WIN32OLE.new('WScript.Shell')
|
261
|
+
shell.AppActivate("Captcha Solver: Auto Recognition and Bypass")
|
262
|
+
shell.AppActivate("Captcha Solver: Auto Recognition and Bypass")
|
263
|
+
sleep(1)
|
264
|
+
shell.SendKeys("{TAB}")
|
265
|
+
sleep(0.5)
|
266
|
+
shell.SendKeys("{ENTER}")
|
267
|
+
|
268
|
+
check_cookie_login = 0
|
269
|
+
sleep(1)
|
270
|
+
rescue
|
271
|
+
@driver.quit
|
272
|
+
return 0
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
if check_cookie_login == 0
|
277
|
+
|
278
|
+
begin
|
279
|
+
|
280
|
+
begin
|
281
|
+
# 최대 20초 동안 확장 프로그램 탭이 열릴 때까지 대기
|
282
|
+
extension_url = 'chrome-extension://ifibfemgeogfhoebkmokieepdoobkbpo/options/options.html'
|
283
|
+
max_wait_time = 20
|
284
|
+
waited = 0
|
285
|
+
found = false
|
286
|
+
|
287
|
+
while waited < max_wait_time
|
288
|
+
all_windows = @driver.window_handles
|
289
|
+
all_windows.each do |window|
|
290
|
+
@driver.switch_to.window(window)
|
291
|
+
current_url = @driver.current_url
|
292
|
+
if current_url.include?(extension_url)
|
293
|
+
found = true
|
294
|
+
break
|
295
|
+
end
|
296
|
+
end
|
297
|
+
break if found
|
298
|
+
|
299
|
+
sleep(3)
|
300
|
+
waited += 1
|
301
|
+
end
|
302
|
+
|
303
|
+
if found
|
304
|
+
# 확장 프로그램 탭을 제외한 나머지 탭 닫기
|
305
|
+
all_windows = @driver.window_handles
|
306
|
+
all_windows.each do |window|
|
307
|
+
@driver.switch_to.window(window)
|
308
|
+
current_url = @driver.current_url
|
309
|
+
if !current_url.include?(extension_url)
|
310
|
+
sleep(2)
|
311
|
+
@driver.close
|
312
|
+
sleep(2)
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
# 확장 프로그램 탭으로 전환
|
317
|
+
remaining_windows = @driver.window_handles
|
318
|
+
if remaining_windows.size > 0
|
319
|
+
@driver.switch_to.window(remaining_windows.first)
|
320
|
+
end
|
321
|
+
else
|
322
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
323
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
324
|
+
end
|
325
|
+
|
326
|
+
rescue => e
|
327
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
328
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
329
|
+
@driver.quit if @driver
|
330
|
+
end
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
begin
|
337
|
+
# 요소 찾기 타임아웃을 10초로 설정
|
338
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
339
|
+
#요소가 나타날 때까지 60초 동안 기다립니다.
|
340
|
+
wait.until { @driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[2]/input') }
|
341
|
+
@driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[2]/input').click
|
342
|
+
sleep(1)
|
343
|
+
Clipboard.copy(captcha_key)
|
344
|
+
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
345
|
+
sleep(1)
|
346
|
+
@driver.find_element(:xpath, '//*[@id="connect"]').click
|
347
|
+
sleep(1)
|
348
|
+
|
349
|
+
begin
|
350
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
351
|
+
wait.until do
|
352
|
+
begin
|
353
|
+
alert = @driver.switch_to.alert
|
354
|
+
alert.accept
|
355
|
+
sleep(1)
|
356
|
+
true
|
357
|
+
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
358
|
+
false
|
359
|
+
end
|
360
|
+
end
|
361
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
362
|
+
@driver.find_element(:xpath, '//*[@id="connect"]').click
|
363
|
+
begin
|
364
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
365
|
+
wait.until do
|
366
|
+
begin
|
367
|
+
alert = @driver.switch_to.alert
|
368
|
+
alert.accept
|
369
|
+
sleep(1)
|
370
|
+
true
|
371
|
+
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
372
|
+
false
|
373
|
+
end
|
374
|
+
end
|
375
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
376
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
377
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
378
|
+
system('taskkill /F /IM chrome.exe')
|
379
|
+
@driver.quit if @driver
|
380
|
+
end
|
381
|
+
end
|
382
|
+
puts '-[√] 브라우저 필요 설정 1차 시도.......'.green
|
383
|
+
@driver.get('chrome://settings/security')
|
384
|
+
sleep(2)
|
385
|
+
mouse_move_percentage(0.3,0.02)
|
386
|
+
sleep(0.5)
|
387
|
+
left_click
|
388
|
+
sleep(1)
|
389
|
+
# 루비에서 'tab' 키를 0.5초마다 7번 누르기
|
390
|
+
7.times do
|
391
|
+
key_stroke('tab') # 'tab' 키를 입력
|
392
|
+
sleep(0.5) # 0.5초 대기
|
393
|
+
end
|
394
|
+
key_stroke('enter')
|
395
|
+
sleep(1)
|
396
|
+
|
397
|
+
@driver.get('chrome://password-manager/settings')
|
398
|
+
sleep(2)
|
399
|
+
mouse_move_percentage(0.3,0.02)
|
400
|
+
sleep(0.5)
|
401
|
+
left_click
|
402
|
+
sleep(1)
|
403
|
+
# 루비에서 'tab' 키를 0.5초마다 7번 누르기
|
404
|
+
4.times do
|
405
|
+
key_stroke('tab') # 'tab' 키를 입력
|
406
|
+
sleep(0.5) # 0.5초 대기
|
407
|
+
end
|
408
|
+
key_stroke('enter')
|
409
|
+
sleep(1)
|
410
|
+
key_stroke('tab')
|
411
|
+
sleep(1)
|
412
|
+
key_stroke('enter')
|
413
|
+
sleep(1)
|
414
|
+
|
415
|
+
rescue
|
416
|
+
begin
|
417
|
+
sleep(1)
|
418
|
+
|
419
|
+
# 요소 찾기 타임아웃을 10초로 설정
|
420
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
421
|
+
#요소가 나타날 때까지 60초 동안 기다립니다.
|
422
|
+
wait.until { @driver.find_element(:xpath, '//*[@name="apiKey"]') }
|
423
|
+
@driver.find_element(:xpath, '//*[@name="apiKey"]').click
|
424
|
+
sleep(1)
|
425
|
+
begin
|
426
|
+
@driver.find_element(:xpath, '//*[@name="apiKey"]').click
|
427
|
+
rescue
|
428
|
+
end
|
429
|
+
|
430
|
+
Clipboard.copy(captcha_key)
|
431
|
+
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
432
|
+
sleep(1)
|
433
|
+
begin
|
434
|
+
@driver.find_element(:xpath, '//*[@class="default-btn"]').click
|
435
|
+
sleep(1)
|
436
|
+
|
437
|
+
begin
|
438
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
439
|
+
wait.until do
|
440
|
+
begin
|
441
|
+
alert = @driver.switch_to.alert
|
442
|
+
alert.accept
|
443
|
+
sleep(1)
|
444
|
+
true
|
445
|
+
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
446
|
+
false
|
447
|
+
end
|
448
|
+
end
|
449
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
450
|
+
|
451
|
+
@driver.find_element(:xpath, '//*[@class="default-btn"]').click
|
452
|
+
begin
|
453
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
454
|
+
wait.until do
|
455
|
+
begin
|
456
|
+
alert = @driver.switch_to.alert
|
457
|
+
alert.accept
|
458
|
+
sleep(1)
|
459
|
+
true
|
460
|
+
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
461
|
+
false
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
rescue Selenium::WebDriver::Error::TimeoutError
|
466
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
467
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
468
|
+
system('taskkill /F /IM chrome.exe')
|
469
|
+
@driver.quit if @driver
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
473
|
+
puts '-[√] 브라우저 필요 설정 1차 시도.......'.green
|
474
|
+
@driver.get('chrome://settings/security')
|
475
|
+
sleep(2)
|
476
|
+
mouse_move_percentage(0.3,0.02)
|
477
|
+
sleep(0.5)
|
478
|
+
left_click
|
479
|
+
sleep(1)
|
480
|
+
# 루비에서 'tab' 키를 0.5초마다 7번 누르기
|
481
|
+
7.times do
|
482
|
+
key_stroke('tab') # 'tab' 키를 입력
|
483
|
+
sleep(0.5) # 0.5초 대기
|
484
|
+
end
|
485
|
+
key_stroke('enter')
|
486
|
+
sleep(1)
|
487
|
+
|
488
|
+
@driver.get('chrome://password-manager/settings')
|
489
|
+
sleep(2)
|
490
|
+
mouse_move_percentage(0.3,0.02)
|
491
|
+
sleep(0.5)
|
492
|
+
left_click
|
493
|
+
sleep(1)
|
494
|
+
# 루비에서 'tab' 키를 0.5초마다 7번 누르기
|
495
|
+
4.times do
|
496
|
+
key_stroke('tab') # 'tab' 키를 입력
|
497
|
+
sleep(0.5) # 0.5초 대기
|
498
|
+
end
|
499
|
+
key_stroke('enter')
|
500
|
+
sleep(1)
|
501
|
+
key_stroke('tab')
|
502
|
+
sleep(1)
|
503
|
+
key_stroke('enter')
|
504
|
+
sleep(1)
|
505
|
+
|
506
|
+
rescue => e
|
507
|
+
@driver.window_handles.each do |handle|
|
508
|
+
@driver.switch_to.window(handle)
|
509
|
+
begin
|
510
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
511
|
+
@driver.close
|
512
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
513
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
514
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
515
|
+
end
|
516
|
+
end
|
517
|
+
return 0
|
518
|
+
@driver.quit
|
519
|
+
end
|
197
520
|
|
198
|
-
|
521
|
+
|
522
|
+
rescue => e
|
523
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
524
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
525
|
+
@driver.window_handles.each do |handle|
|
526
|
+
@driver.switch_to.window(handle)
|
527
|
+
begin
|
528
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
529
|
+
@driver.close
|
530
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
531
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
532
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
533
|
+
end
|
534
|
+
end
|
535
|
+
return 0
|
536
|
+
@driver.quit
|
537
|
+
end
|
538
|
+
|
539
|
+
end
|
540
|
+
|
541
|
+
rescue => e
|
542
|
+
puts "초기 작업 브라우저가 완벽하게 세팅 되지 않았습니다.".red
|
543
|
+
puts "C드라이브에서 scraping_cookie 폴더 삭제 후 다시 시작해주세요.".red
|
544
|
+
@driver.window_handles.each do |handle|
|
545
|
+
@driver.switch_to.window(handle)
|
546
|
+
begin
|
547
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
548
|
+
@driver.close
|
549
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
550
|
+
puts "Failed to close tab: #{e.message}"
|
551
|
+
end
|
552
|
+
end
|
553
|
+
@driver.quit
|
554
|
+
return 0
|
555
|
+
end
|
556
|
+
|
557
|
+
|
558
|
+
|
559
|
+
else
|
560
|
+
end
|
561
|
+
|
562
|
+
begin
|
563
|
+
|
564
|
+
|
565
|
+
|
566
|
+
@driver.get('https://chromewebstore.google.com/detail/captcha-solver-auto-recog/ifibfemgeogfhoebkmokieepdoobkbpo?hl=ko')
|
567
|
+
sleep(1)
|
568
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
569
|
+
#요소가 나타날 때까지 3초 동안 기다립니다.
|
570
|
+
wait.until { @driver.find_element(xpath: '//section[@class="lwrbTd"]//button[@jsname="ajZLRd"]') } #추가 되어 있음
|
571
|
+
sleep(1)
|
572
|
+
@driver.manage.window.maximize
|
573
|
+
|
574
|
+
rescue => e
|
575
|
+
puts '-[√] 연결 실패.......'.red
|
576
|
+
@driver.window_handles.each do |handle|
|
577
|
+
@driver.switch_to.window(handle)
|
578
|
+
begin
|
579
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
580
|
+
@driver.close
|
581
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
582
|
+
puts "Failed to close tab: #{e.message}"
|
583
|
+
end
|
584
|
+
end
|
585
|
+
@driver.quit
|
586
|
+
return 0
|
587
|
+
end
|
588
|
+
end
|
199
589
|
|
200
590
|
|
201
591
|
def update(user_id, user_pw, title, content, option, post_url, signup_url, login_url, cc_check_url, image_url_cheng, img_link2, category, more_txt1, more_txt2, more_txt3, more_txt4, captcha_key, keyword)
|
@@ -212,164 +602,15 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
|
|
212
602
|
@more_txt1 = more_txt1
|
213
603
|
@more_txt2 = more_txt2
|
214
604
|
@more_txt3 = more_txt3
|
215
|
-
@more_txt4 = more_txt4
|
216
|
-
@captcha_key = captcha_key
|
217
|
-
sleep(1)
|
218
|
-
|
219
|
-
|
220
|
-
####################탭나누기 수정중######################################
|
221
|
-
begin
|
222
|
-
puts '-[√] 투 캡챠 api 입력 시도 1.......'.green
|
223
|
-
|
224
|
-
#@driver.switch_to.window(@driver.window_handles[0])
|
225
|
-
|
226
|
-
|
227
|
-
# 요소 찾기 타임아웃을 10초로 설정
|
228
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
229
|
-
#요소가 나타날 때까지 60초 동안 기다립니다.
|
230
|
-
wait.until { @driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[2]/input') }
|
231
|
-
@driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[2]/input').click
|
232
|
-
sleep(1)
|
233
|
-
Clipboard.copy(captcha_key)
|
234
|
-
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
235
|
-
sleep(1)
|
236
|
-
@driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[3]/button').click
|
237
|
-
sleep(1)
|
238
|
-
|
239
|
-
begin
|
240
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
241
|
-
wait.until do
|
242
|
-
begin
|
243
|
-
alert = @driver.switch_to.alert
|
244
|
-
alert.accept
|
245
|
-
true
|
246
|
-
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
247
|
-
false
|
248
|
-
end
|
249
|
-
end
|
250
|
-
rescue Selenium::WebDriver::Error::TimeoutError
|
251
|
-
puts "alert이 없으므로 버튼 클릭"
|
252
|
-
@driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[3]/button').click
|
253
|
-
begin
|
254
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
255
|
-
wait.until do
|
256
|
-
begin
|
257
|
-
alert = @driver.switch_to.alert
|
258
|
-
alert.accept
|
259
|
-
true
|
260
|
-
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
261
|
-
false
|
262
|
-
end
|
263
|
-
end
|
264
|
-
puts "두 번째 alert 처리 완료"
|
265
|
-
rescue Selenium::WebDriver::Error::TimeoutError
|
266
|
-
puts "두 번째 alert이 10초 내에 나타나지 않음. Chrome 종료."
|
267
|
-
system('taskkill /F /IM chrome.exe')
|
268
|
-
@driver.quit if @driver
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
|
-
|
273
|
-
rescue
|
274
|
-
begin
|
275
|
-
puts '-[√] 투 캡챠 api 입력 시도 2.......'.green
|
276
|
-
sleep(1)
|
277
|
-
#@driver.switch_to.window(@driver.window_handles[0])
|
278
|
-
|
279
|
-
|
280
|
-
# 요소 찾기 타임아웃을 10초로 설정
|
281
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
282
|
-
#요소가 나타날 때까지 60초 동안 기다립니다.
|
283
|
-
wait.until { @driver.find_element(:xpath, '//*[@name="apiKey"]') }
|
284
|
-
@driver.find_element(:xpath, '//*[@name="apiKey"]').click
|
285
|
-
sleep(1)
|
286
|
-
begin
|
287
|
-
@driver.find_element(:xpath, '//*[@name="apiKey"]').click
|
288
|
-
rescue
|
289
|
-
|
290
|
-
puts '-[√] 로딩 및 코드인식 실패등 기타 이유로 다음 게시판 작업으로 이동합니다.......'.red
|
291
|
-
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
292
|
-
|
293
|
-
end
|
294
|
-
|
295
|
-
Clipboard.copy(captcha_key)
|
296
|
-
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
297
|
-
sleep(1)
|
298
|
-
begin
|
299
|
-
@driver.find_element(:class_name, 'default-btn').click
|
300
|
-
sleep(1)
|
301
|
-
|
302
|
-
begin
|
303
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
304
|
-
wait.until do
|
305
|
-
begin
|
306
|
-
alert = @driver.switch_to.alert
|
307
|
-
alert.accept
|
308
|
-
true
|
309
|
-
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
310
|
-
false
|
311
|
-
end
|
312
|
-
end
|
313
|
-
rescue Selenium::WebDriver::Error::TimeoutError
|
314
|
-
puts "alert이 없으므로 버튼 클릭"
|
315
|
-
@driver.find_element(:xpath, '/html/body/div/div[1]/table/tbody/tr[1]/td[3]/button').click
|
316
|
-
begin
|
317
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
|
318
|
-
wait.until do
|
319
|
-
begin
|
320
|
-
alert = @driver.switch_to.alert
|
321
|
-
alert.accept
|
322
|
-
true
|
323
|
-
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
324
|
-
false
|
325
|
-
end
|
326
|
-
end
|
327
|
-
puts "두 번째 alert 처리 완료"
|
328
|
-
rescue Selenium::WebDriver::Error::TimeoutError
|
329
|
-
puts "두 번째 alert이 10초 내에 나타나지 않음. Chrome 종료."
|
330
|
-
system('taskkill /F /IM chrome.exe')
|
331
|
-
@driver.quit if @driver
|
332
|
-
end
|
333
|
-
end
|
334
|
-
|
335
|
-
rescue => e
|
336
|
-
@driver.window_handles.each do |handle|
|
337
|
-
@driver.switch_to.window(handle)
|
338
|
-
begin
|
339
|
-
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
340
|
-
@driver.close
|
341
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
342
|
-
puts "크롬 브라우저 종료: #{e.message}"
|
343
|
-
end
|
344
|
-
end
|
345
|
-
return 0
|
346
|
-
@driver.quit
|
347
|
-
end
|
605
|
+
@more_txt4 = more_txt4
|
606
|
+
@captcha_key = captcha_key
|
607
|
+
sleep(1)
|
608
|
+
|
348
609
|
|
349
|
-
|
350
|
-
puts '-[√] 로딩 및 코드인식 실패등 기타 이유로 다음 게시판 작업으로 이동합니다.......'.red
|
351
|
-
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
352
|
-
@driver.window_handles.each do |handle|
|
353
|
-
@driver.switch_to.window(handle)
|
354
|
-
begin
|
355
|
-
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
356
|
-
@driver.close
|
357
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
358
|
-
puts "크롬 브라우저 종료: #{e.message}"
|
359
|
-
end
|
360
|
-
end
|
361
|
-
return 0
|
362
|
-
@driver.quit
|
363
|
-
end
|
364
|
-
|
365
|
-
end
|
366
|
-
#@driver.switch_to.window(@driver.window_handles[0])
|
367
|
-
####################탭나누기 수정중######################################
|
368
|
-
sleep(2)
|
610
|
+
####################탭나누기 수정중######################################
|
369
611
|
|
370
612
|
|
371
613
|
|
372
|
-
##################
|
373
614
|
signup_url = option['signup_url'].to_s
|
374
615
|
|
375
616
|
|
@@ -379,50 +620,70 @@ sleep(2)
|
|
379
620
|
if signup_url == '' or signup_url == '회원가입 페이지 url'
|
380
621
|
|
381
622
|
else
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
wait.until { @driver.execute_script("return document.readyState") == "complete" }
|
386
|
-
@driver.get(signup_url)
|
387
|
-
sleep(1)
|
388
|
-
puts '-[√] 회원가입 페이지 URL 이동.......'.magenta
|
389
|
-
|
390
|
-
# Alert 처리 부분
|
391
|
-
begin
|
392
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
393
|
-
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
394
|
-
alert.accept # 알림을 확인
|
395
|
-
rescue
|
396
|
-
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
397
|
-
end
|
398
|
-
|
623
|
+
@driver.get(signup_url)
|
624
|
+
puts '-[√] 회원가입 페이지 URL 이동.......'.magenta
|
625
|
+
|
399
626
|
|
400
|
-
rescue Selenium::WebDriver::Error::UnknownError => e
|
401
|
-
puts "#{signup_url} 해당 사이트의 문제로 접속이 불가능합니다." # 오류 메시지 출력
|
402
|
-
# 열린 모든 창을 닫음
|
403
|
-
@driver.window_handles.each do |handle|
|
404
|
-
@driver.switch_to.window(handle)
|
405
|
-
begin
|
406
|
-
@driver.close
|
407
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
408
|
-
puts "사이트 내부에 예외 발생: #{e.message}"
|
409
|
-
end
|
410
|
-
end
|
411
627
|
|
412
|
-
# 드라이버 종료
|
413
|
-
@driver.quit if @driver
|
414
|
-
return 0
|
415
628
|
|
416
|
-
rescue Selenium::WebDriver::Error::TimeoutError => e
|
417
|
-
puts "웹 페이지 로드가 시간 초과되었습니다: #{e.message}"
|
418
|
-
@driver.quit if @driver
|
419
|
-
return 0
|
420
629
|
|
421
|
-
|
422
|
-
|
630
|
+
begin
|
631
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
632
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
633
|
+
if error_text
|
634
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
635
|
+
@driver.quit if @driver
|
636
|
+
return 0
|
637
|
+
end
|
638
|
+
rescue
|
639
|
+
end
|
640
|
+
|
641
|
+
begin
|
642
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
643
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
|
644
|
+
if error_text
|
645
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
646
|
+
@driver.quit if @driver
|
647
|
+
return 0
|
648
|
+
end
|
649
|
+
rescue
|
650
|
+
end
|
651
|
+
|
652
|
+
begin
|
653
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 2) # 3초 대기
|
654
|
+
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
655
|
+
alert.accept # 알림을 확인
|
656
|
+
rescue
|
657
|
+
end
|
658
|
+
|
659
|
+
|
660
|
+
sleep(1)
|
423
661
|
|
662
|
+
|
663
|
+
|
664
|
+
|
665
|
+
|
424
666
|
|
425
667
|
|
668
|
+
#오른쪽 마우스 해제 코드
|
669
|
+
begin
|
670
|
+
@driver.execute_script <<-JS
|
671
|
+
document.querySelectorAll('body').forEach(function(element) {
|
672
|
+
element.oncontextmenu = null;
|
673
|
+
});
|
674
|
+
document.removeEventListener('contextmenu', function(e) { e.preventDefault(); }, false);
|
675
|
+
JS
|
676
|
+
|
677
|
+
@driver.execute_script <<-JS
|
678
|
+
document.addEventListener('contextmenu', function(e) {
|
679
|
+
e.stopImmediatePropagation();
|
680
|
+
}, true);
|
681
|
+
JS
|
682
|
+
|
683
|
+
@driver.execute_script("window.oncontextmenu = null;")
|
684
|
+
rescue
|
685
|
+
end
|
686
|
+
|
426
687
|
|
427
688
|
|
428
689
|
sleep(1)
|
@@ -435,6 +696,8 @@ sleep(2)
|
|
435
696
|
puts '-[√] 3 캡챠 발생 유무 확인.......'.green
|
436
697
|
sleep(2)
|
437
698
|
|
699
|
+
|
700
|
+
|
438
701
|
begin
|
439
702
|
@driver.find_element(:xpath, '//*[@class="amzn-captcha-state-container"]')
|
440
703
|
puts '-[√] 아임웹 캡챠 확인!! 해제 실행.......'.green
|
@@ -471,7 +734,7 @@ sleep(2)
|
|
471
734
|
wait.until { @driver.find_elements(:xpath, '//*[@id="amzn-captcha-verify-button"]').size == 0 }
|
472
735
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
473
736
|
|
474
|
-
sleep(
|
737
|
+
sleep(5)
|
475
738
|
rescue => e
|
476
739
|
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
477
740
|
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
@@ -518,7 +781,7 @@ sleep(2)
|
|
518
781
|
|
519
782
|
#@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
520
783
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
521
|
-
sleep(
|
784
|
+
sleep(5)
|
522
785
|
rescue => e
|
523
786
|
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
524
787
|
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
@@ -562,7 +825,7 @@ sleep(2)
|
|
562
825
|
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
563
826
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
564
827
|
|
565
|
-
sleep(
|
828
|
+
sleep(5)
|
566
829
|
rescue => e
|
567
830
|
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
568
831
|
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
@@ -610,9 +873,22 @@ sleep(2)
|
|
610
873
|
begin
|
611
874
|
sleep(1)
|
612
875
|
@driver.switch_to.alert.accept
|
876
|
+
sleep(1)
|
613
877
|
rescue
|
614
878
|
end
|
615
879
|
|
880
|
+
begin
|
881
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
882
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
883
|
+
if error_text
|
884
|
+
puts '사이트에 연결할 수 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
|
885
|
+
@driver.quit if @driver
|
886
|
+
return 0
|
887
|
+
end
|
888
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
889
|
+
# 해당 텍스트가 없으면 아무 작업 안함
|
890
|
+
end
|
891
|
+
|
616
892
|
|
617
893
|
##체크박스1-1 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
618
894
|
puts '-[√] 회원가입 체크박스 1차 탐색.......'.yellow
|
@@ -1468,15 +1744,28 @@ sleep(2)
|
|
1468
1744
|
|
1469
1745
|
|
1470
1746
|
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1475
1747
|
|
1476
1748
|
|
1477
1749
|
sleep(1)
|
1478
1750
|
##캡챠 이미지,2캡챠,,등등 코드 부분─────────────────────────────────────────────────────────────────────>
|
1479
|
-
|
1751
|
+
#오른쪽 마우스 해제 코드
|
1752
|
+
begin
|
1753
|
+
@driver.execute_script <<-JS
|
1754
|
+
document.querySelectorAll('body').forEach(function(element) {
|
1755
|
+
element.oncontextmenu = null;
|
1756
|
+
});
|
1757
|
+
document.removeEventListener('contextmenu', function(e) { e.preventDefault(); }, false);
|
1758
|
+
JS
|
1759
|
+
|
1760
|
+
@driver.execute_script <<-JS
|
1761
|
+
document.addEventListener('contextmenu', function(e) {
|
1762
|
+
e.stopImmediatePropagation();
|
1763
|
+
}, true);
|
1764
|
+
JS
|
1765
|
+
|
1766
|
+
@driver.execute_script("window.oncontextmenu = null;")
|
1767
|
+
rescue
|
1768
|
+
end
|
1480
1769
|
sleep(1)
|
1481
1770
|
##캡챠 이미지,2캡챠,,등등 코드 부분─────────────────────────────────────────────────────────────────────>
|
1482
1771
|
puts '-[√] 캡챠 유형 탐색.......'.green
|
@@ -1575,12 +1864,7 @@ rescue
|
|
1575
1864
|
rescue
|
1576
1865
|
begin
|
1577
1866
|
@driver.switch_to.default_content()
|
1578
|
-
@driver.
|
1579
|
-
if img.attribute('src').include?('kboard_captcha')
|
1580
|
-
el = img # 캡챠 이미지를 el에 저장
|
1581
|
-
break # 첫 번째 이미지를 찾으면 루프 종료
|
1582
|
-
end
|
1583
|
-
end
|
1867
|
+
el = @driver.find_element(:xpath, '//img[contains(@src, "kboard_captcha")]')
|
1584
1868
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
1585
1869
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
1586
1870
|
puts '-[√] 챕챠 코드 code 5-1.......'.red
|
@@ -1597,11 +1881,13 @@ rescue
|
|
1597
1881
|
@driver.action.key_down(:shift).key_stroke('m').key_up(:shift).perform #단축키
|
1598
1882
|
sleep(1)
|
1599
1883
|
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
1884
|
+
|
1885
|
+
|
1600
1886
|
rescue
|
1601
1887
|
begin
|
1602
1888
|
@driver.switch_to.default_content()
|
1603
1889
|
#@driver.find_element(:xpath, '//*[@for="kboard-input-captcha"]')
|
1604
|
-
el = @driver.find_element(:
|
1890
|
+
el = @driver.find_element(:xpath, '//*[@for="kboard-input-captcha"] img')
|
1605
1891
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
1606
1892
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
1607
1893
|
puts '-[√] 챕챠 코드 code 5-2.......'.red
|
@@ -2444,6 +2730,7 @@ end
|
|
2444
2730
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
2445
2731
|
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
2446
2732
|
alert.accept # 알림을 확인
|
2733
|
+
sleep(1)
|
2447
2734
|
rescue
|
2448
2735
|
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
2449
2736
|
end
|
@@ -2465,58 +2752,69 @@ login_url = option['login_url'].to_s
|
|
2465
2752
|
if login_url == '' or login_url == '로그인 페이지 url'
|
2466
2753
|
|
2467
2754
|
else
|
2468
|
-
|
2755
|
+
@driver.get(login_url)
|
2756
|
+
puts '-[√] 로그인 페이지 URL 이동.......'.magenta
|
2757
|
+
|
2758
|
+
|
2759
|
+
|
2760
|
+
|
2761
|
+
|
2469
2762
|
begin
|
2470
|
-
|
2471
|
-
|
2472
|
-
|
2473
|
-
|
2474
|
-
puts '-[√] 로그인 페이지 URL 이동.......'.magenta
|
2475
|
-
# Alert 처리 부분
|
2476
|
-
begin
|
2477
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
2478
|
-
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
2479
|
-
alert.accept # 알림을 확인
|
2480
|
-
rescue
|
2481
|
-
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
2482
|
-
end
|
2483
|
-
|
2484
|
-
rescue Selenium::WebDriver::Error::UnknownError => e
|
2485
|
-
puts "#{login_url} 해당 사이트의 문제로 접속이 불가능합니다." # 오류 메시지 출력
|
2486
|
-
# 열린 모든 창을 닫음
|
2487
|
-
@driver.window_handles.each do |handle|
|
2488
|
-
@driver.switch_to.window(handle)
|
2489
|
-
begin
|
2490
|
-
@driver.close
|
2491
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
2492
|
-
puts "사이트 내부에 예외 발생: #{e.message}"
|
2493
|
-
end
|
2494
|
-
end
|
2495
|
-
|
2496
|
-
# 드라이버 종료
|
2763
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
2764
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
2765
|
+
if error_text
|
2766
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
2497
2767
|
@driver.quit if @driver
|
2498
|
-
return 0
|
2499
|
-
|
2500
|
-
|
2501
|
-
|
2768
|
+
return 0
|
2769
|
+
end
|
2770
|
+
rescue
|
2771
|
+
end
|
2772
|
+
|
2773
|
+
begin
|
2774
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
2775
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
|
2776
|
+
if error_text
|
2777
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
2502
2778
|
@driver.quit if @driver
|
2503
2779
|
return 0
|
2504
|
-
|
2505
|
-
rescue
|
2506
2780
|
end
|
2507
|
-
|
2508
|
-
|
2509
|
-
|
2510
|
-
|
2781
|
+
rescue
|
2782
|
+
end
|
2783
|
+
|
2784
|
+
begin
|
2785
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 2) # 3초 대기
|
2786
|
+
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
2787
|
+
alert.accept # 알림을 확인
|
2788
|
+
rescue
|
2789
|
+
end
|
2790
|
+
|
2791
|
+
|
2792
|
+
|
2793
|
+
sleep(1)
|
2794
|
+
|
2511
2795
|
##캡챠 해제 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
2796
|
+
#오른쪽 마우스 해제 코드
|
2797
|
+
begin
|
2798
|
+
@driver.execute_script <<-JS
|
2799
|
+
document.querySelectorAll('body').forEach(function(element) {
|
2800
|
+
element.oncontextmenu = null;
|
2801
|
+
});
|
2802
|
+
document.removeEventListener('contextmenu', function(e) { e.preventDefault(); }, false);
|
2803
|
+
JS
|
2512
2804
|
|
2513
|
-
|
2514
|
-
|
2515
|
-
|
2516
|
-
|
2517
|
-
|
2518
|
-
|
2519
|
-
|
2805
|
+
@driver.execute_script <<-JS
|
2806
|
+
document.addEventListener('contextmenu', function(e) {
|
2807
|
+
e.stopImmediatePropagation();
|
2808
|
+
}, true);
|
2809
|
+
JS
|
2810
|
+
|
2811
|
+
@driver.execute_script("window.oncontextmenu = null;")
|
2812
|
+
rescue
|
2813
|
+
end
|
2814
|
+
|
2815
|
+
sleep(5)
|
2816
|
+
|
2817
|
+
|
2520
2818
|
begin
|
2521
2819
|
@driver.find_element(:xpath, '//*[@class="amzn-captcha-state-container"]')
|
2522
2820
|
puts '-[√] 아임웹 캡챠 확인!! 해제 실행.......'.green
|
@@ -2553,13 +2851,8 @@ login_url = option['login_url'].to_s
|
|
2553
2851
|
wait.until { @driver.find_elements(:xpath, '//*[@id="amzn-captcha-verify-button"]').size == 0 }
|
2554
2852
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
2555
2853
|
|
2556
|
-
sleep(
|
2557
|
-
rescue
|
2558
|
-
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
2559
|
-
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
2560
|
-
puts e
|
2561
|
-
@driver.close
|
2562
|
-
return 0
|
2854
|
+
sleep(5)
|
2855
|
+
rescue
|
2563
2856
|
end
|
2564
2857
|
end
|
2565
2858
|
rescue
|
@@ -2600,19 +2893,14 @@ login_url = option['login_url'].to_s
|
|
2600
2893
|
|
2601
2894
|
#@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
2602
2895
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
2603
|
-
sleep(
|
2604
|
-
rescue
|
2605
|
-
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
2606
|
-
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
2607
|
-
puts e
|
2608
|
-
@driver.close
|
2609
|
-
return 0
|
2896
|
+
sleep(5)
|
2897
|
+
rescue
|
2610
2898
|
end
|
2611
2899
|
end
|
2612
2900
|
rescue
|
2613
2901
|
begin
|
2614
2902
|
# 타임아웃을 3초로 설정
|
2615
|
-
wait = Selenium::WebDriver::Wait.new(:timeout =>
|
2903
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 2)
|
2616
2904
|
# 요소가 나타날 때까지 30초 동안 기다립니다.
|
2617
2905
|
wait.until { @driver.find_element(:xpath, '//*[@data-state="ready"]') }
|
2618
2906
|
sleep(1)
|
@@ -2644,13 +2932,8 @@ login_url = option['login_url'].to_s
|
|
2644
2932
|
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
2645
2933
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
2646
2934
|
|
2647
|
-
sleep(
|
2648
|
-
rescue
|
2649
|
-
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
2650
|
-
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
2651
|
-
puts e
|
2652
|
-
@driver.close
|
2653
|
-
return 0
|
2935
|
+
sleep(5)
|
2936
|
+
rescue
|
2654
2937
|
end
|
2655
2938
|
end
|
2656
2939
|
rescue
|
@@ -2700,7 +2983,7 @@ login_url = option['login_url'].to_s
|
|
2700
2983
|
|
2701
2984
|
|
2702
2985
|
begin
|
2703
|
-
|
2986
|
+
|
2704
2987
|
chat_box = @driver.find_element(:xpath, '//*[@class="adsbygoogle adsbygoogle-noablate"]')
|
2705
2988
|
@driver.execute_script("arguments[0].remove();", chat_box)
|
2706
2989
|
puts '-[√] 숨김 code 1 제거 완료.......'.green
|
@@ -2709,7 +2992,7 @@ login_url = option['login_url'].to_s
|
|
2709
2992
|
end
|
2710
2993
|
|
2711
2994
|
begin
|
2712
|
-
|
2995
|
+
|
2713
2996
|
chat_box = @driver.find_element(:xpath, '//*[@class="google-auto-placed"]')
|
2714
2997
|
@driver.execute_script("arguments[0].remove();", chat_box)
|
2715
2998
|
puts '-[√] 숨김 code 2 제거 완료.......'.green
|
@@ -2718,7 +3001,7 @@ login_url = option['login_url'].to_s
|
|
2718
3001
|
end
|
2719
3002
|
|
2720
3003
|
begin
|
2721
|
-
|
3004
|
+
|
2722
3005
|
chat_box = @driver.find_elements(:xpath, '//*[@class="adsbygoogle adsbygoogle-noablate"]')[1]
|
2723
3006
|
@driver.execute_script("arguments[0].remove();", chat_box)
|
2724
3007
|
puts '-[√] 숨김 code 3 제거 완료.......'.green
|
@@ -2727,7 +3010,7 @@ login_url = option['login_url'].to_s
|
|
2727
3010
|
end
|
2728
3011
|
|
2729
3012
|
begin
|
2730
|
-
|
3013
|
+
|
2731
3014
|
chat_box = @driver.find_elements(:xpath, '//*[@class="adsbygoogle adsbygoogle-noablate"]')[2]
|
2732
3015
|
@driver.execute_script("arguments[0].remove();", chat_box)
|
2733
3016
|
puts '-[√] 숨김 code 4 제거 완료.......'.green
|
@@ -2736,7 +3019,7 @@ login_url = option['login_url'].to_s
|
|
2736
3019
|
end
|
2737
3020
|
|
2738
3021
|
begin
|
2739
|
-
|
3022
|
+
|
2740
3023
|
chat_box = @driver.find_elements(:xpath, '//*[@class="adsbygoogle adsbygoogle-noablate"]')[3]
|
2741
3024
|
@driver.execute_script("arguments[0].remove();", chat_box)
|
2742
3025
|
puts '-[√] 숨김 code 5 제거 완료.......'.green
|
@@ -2757,12 +3040,10 @@ login_url = option['login_url'].to_s
|
|
2757
3040
|
rescue
|
2758
3041
|
end
|
2759
3042
|
|
2760
|
-
|
2761
|
-
|
2762
3043
|
|
2763
3044
|
|
2764
3045
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
2765
|
-
|
3046
|
+
|
2766
3047
|
|
2767
3048
|
begin
|
2768
3049
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
@@ -2844,7 +3125,7 @@ login_url = option['login_url'].to_s
|
|
2844
3125
|
@driver.find_element(:xpath, '//*[@id="hd_pops_1"]/div[2]/button[1]').click
|
2845
3126
|
sleep(1)
|
2846
3127
|
rescue
|
2847
|
-
|
3128
|
+
|
2848
3129
|
|
2849
3130
|
end
|
2850
3131
|
|
@@ -2874,7 +3155,7 @@ login_url = option['login_url'].to_s
|
|
2874
3155
|
|
2875
3156
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
2876
3157
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
2877
|
-
|
3158
|
+
|
2878
3159
|
|
2879
3160
|
begin
|
2880
3161
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
@@ -2956,7 +3237,7 @@ login_url = option['login_url'].to_s
|
|
2956
3237
|
@driver.find_element(:xpath, '//*[@id="hd_pops_2"]/div[2]/button[1]').click
|
2957
3238
|
sleep(1)
|
2958
3239
|
rescue
|
2959
|
-
|
3240
|
+
|
2960
3241
|
|
2961
3242
|
end
|
2962
3243
|
|
@@ -2986,7 +3267,7 @@ login_url = option['login_url'].to_s
|
|
2986
3267
|
end
|
2987
3268
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
2988
3269
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
2989
|
-
|
3270
|
+
|
2990
3271
|
|
2991
3272
|
begin
|
2992
3273
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
@@ -3068,7 +3349,7 @@ login_url = option['login_url'].to_s
|
|
3068
3349
|
@driver.find_element(:xpath, '//*[@id="hd_pops_3"]/div[2]/button[1]').click
|
3069
3350
|
sleep(1)
|
3070
3351
|
rescue
|
3071
|
-
|
3352
|
+
|
3072
3353
|
|
3073
3354
|
end
|
3074
3355
|
|
@@ -3098,7 +3379,7 @@ login_url = option['login_url'].to_s
|
|
3098
3379
|
end
|
3099
3380
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
3100
3381
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
3101
|
-
|
3382
|
+
|
3102
3383
|
|
3103
3384
|
begin
|
3104
3385
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
@@ -3180,7 +3461,7 @@ login_url = option['login_url'].to_s
|
|
3180
3461
|
@driver.find_element(:xpath, '//*[@id="hd_pops_4"]/div[2]/button[1]').click
|
3181
3462
|
sleep(1)
|
3182
3463
|
rescue
|
3183
|
-
|
3464
|
+
|
3184
3465
|
|
3185
3466
|
end
|
3186
3467
|
|
@@ -3210,7 +3491,7 @@ login_url = option['login_url'].to_s
|
|
3210
3491
|
end
|
3211
3492
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
3212
3493
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
3213
|
-
|
3494
|
+
|
3214
3495
|
|
3215
3496
|
begin
|
3216
3497
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
@@ -3292,7 +3573,7 @@ login_url = option['login_url'].to_s
|
|
3292
3573
|
@driver.find_element(:xpath, '//*[@id="hd_pops_5"]/div[2]/button[1]').click
|
3293
3574
|
sleep(1)
|
3294
3575
|
rescue
|
3295
|
-
|
3576
|
+
|
3296
3577
|
|
3297
3578
|
end
|
3298
3579
|
|
@@ -3322,10 +3603,20 @@ login_url = option['login_url'].to_s
|
|
3322
3603
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
3323
3604
|
|
3324
3605
|
|
3325
|
-
|
3606
|
+
begin
|
3607
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
3608
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
3609
|
+
if error_text
|
3610
|
+
puts '사이트에 연결할 수 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
|
3611
|
+
@driver.quit if @driver
|
3612
|
+
return 0
|
3613
|
+
end
|
3614
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
3615
|
+
# 해당 텍스트가 없으면 아무 작업 안함
|
3616
|
+
end
|
3326
3617
|
|
3327
3618
|
##아이디 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
3328
|
-
|
3619
|
+
|
3329
3620
|
sleep(1)
|
3330
3621
|
begin
|
3331
3622
|
@driver.find_element(:xpath, '//*[@name="mb_id"]').send_keys(user_id)
|
@@ -3422,22 +3713,13 @@ login_url = option['login_url'].to_s
|
|
3422
3713
|
begin
|
3423
3714
|
@driver.find_element(:xpath, '//*[@class="username"]').send_keys(user_id)
|
3424
3715
|
sleep(3)
|
3425
|
-
rescue
|
3426
|
-
|
3427
|
-
|
3428
|
-
|
3429
|
-
|
3430
|
-
|
3431
|
-
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
3432
|
-
@driver.close
|
3433
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
3434
|
-
puts "크롬 브라우저 종료: #{e.message}"
|
3435
|
-
end
|
3436
|
-
end
|
3437
|
-
return 0
|
3438
|
-
@driver.quit
|
3716
|
+
rescue
|
3717
|
+
begin
|
3718
|
+
@driver.find_element(:xpath, '//*[@data-key="username"]').send_keys(user_id)
|
3719
|
+
sleep(3)
|
3720
|
+
rescue
|
3721
|
+
end
|
3439
3722
|
end
|
3440
|
-
|
3441
3723
|
end
|
3442
3724
|
end
|
3443
3725
|
end
|
@@ -3537,8 +3819,13 @@ login_url = option['login_url'].to_s
|
|
3537
3819
|
@driver.find_element(:xpath, '//*[@id="ol_pwlabel"]').send_keys(user_pw)
|
3538
3820
|
sleep(1)
|
3539
3821
|
rescue
|
3540
|
-
|
3541
|
-
|
3822
|
+
begin
|
3823
|
+
@driver.find_element(:xpath, '//*[@data-key="user_password"]').send_keys(user_pw)
|
3824
|
+
sleep(1)
|
3825
|
+
rescue
|
3826
|
+
|
3827
|
+
@driver.action.key_down(:tab).key_up(:tab).perform #x탭
|
3828
|
+
end
|
3542
3829
|
end
|
3543
3830
|
end
|
3544
3831
|
end
|
@@ -3556,7 +3843,7 @@ login_url = option['login_url'].to_s
|
|
3556
3843
|
end
|
3557
3844
|
end
|
3558
3845
|
end
|
3559
|
-
|
3846
|
+
|
3560
3847
|
sleep(1)
|
3561
3848
|
end
|
3562
3849
|
##패스워드 입력 코드 부분─────────────────────────────────────────────────────────────────────<
|
@@ -3595,47 +3882,60 @@ login_url = option['login_url'].to_s
|
|
3595
3882
|
sleep(3)
|
3596
3883
|
rescue
|
3597
3884
|
begin
|
3598
|
-
@driver.find_element(:xpath, '//*[@
|
3885
|
+
@driver.find_element(:xpath, '//*[@class="btn btn-color pull-right"]').click
|
3599
3886
|
puts '-[√] 로그인 버튼 코드 7 타겟.......'.cyan
|
3600
3887
|
sleep(3)
|
3601
3888
|
rescue
|
3602
3889
|
begin
|
3603
|
-
@driver.find_element(:xpath, '//*[@
|
3890
|
+
@driver.find_element(:xpath, '//*[@alt="로그인"]').click
|
3604
3891
|
puts '-[√] 로그인 버튼 코드 8 타겟.......'.cyan
|
3605
3892
|
sleep(3)
|
3606
3893
|
rescue
|
3607
3894
|
begin
|
3608
|
-
@driver.find_element(:xpath, '//*[@id="
|
3895
|
+
@driver.find_element(:xpath, '//*[@id="mb_login"]/form/div[5]/button').click
|
3609
3896
|
puts '-[√] 로그인 버튼 코드 9 타겟.......'.cyan
|
3610
3897
|
sleep(3)
|
3611
3898
|
rescue
|
3612
3899
|
begin
|
3613
|
-
@driver.find_element(:xpath, '//*[@
|
3900
|
+
@driver.find_element(:xpath, '//*[@id="ol_submit"]').click
|
3614
3901
|
puts '-[√] 로그인 버튼 코드 10 타겟.......'.cyan
|
3615
3902
|
sleep(3)
|
3616
3903
|
rescue
|
3617
3904
|
begin
|
3618
|
-
@driver.find_element(:xpath, '//*[@
|
3905
|
+
@driver.find_element(:xpath, '//*[@alt="login"]').click
|
3619
3906
|
puts '-[√] 로그인 버튼 코드 11 타겟.......'.cyan
|
3620
3907
|
sleep(3)
|
3621
3908
|
rescue
|
3622
3909
|
begin
|
3623
|
-
@driver.find_element(:xpath, '//*[@
|
3910
|
+
@driver.find_element(:xpath, '//*[@title="login"]').click
|
3624
3911
|
puts '-[√] 로그인 버튼 코드 12 타겟.......'.cyan
|
3625
3912
|
sleep(3)
|
3626
3913
|
rescue
|
3627
3914
|
begin
|
3628
|
-
@driver.find_element(:xpath, '//*[@id="
|
3915
|
+
@driver.find_element(:xpath, '//*[@id="signIn_1"]').click
|
3629
3916
|
puts '-[√] 로그인 버튼 코드 13 타겟.......'.cyan
|
3630
3917
|
sleep(3)
|
3631
3918
|
rescue
|
3632
3919
|
begin
|
3633
|
-
@driver.find_element(:xpath, '//*[@
|
3920
|
+
@driver.find_element(:xpath, '//*[@id="btn_login"]').click
|
3634
3921
|
puts '-[√] 로그인 버튼 코드 14 타겟.......'.cyan
|
3635
3922
|
sleep(3)
|
3636
3923
|
rescue
|
3637
|
-
|
3638
|
-
|
3924
|
+
begin
|
3925
|
+
@driver.find_element(:xpath, '//*[@name="wp-submit"]').click
|
3926
|
+
puts '-[√] 로그인 버튼 코드 15 타겟.......'.cyan
|
3927
|
+
sleep(3)
|
3928
|
+
rescue
|
3929
|
+
begin
|
3930
|
+
@driver.find_element(:xpath, '//*[@id="um-submit-btn"]').click
|
3931
|
+
puts '-[√] 로그인 버튼 코드 15 타겟.......'.cyan
|
3932
|
+
sleep(3)
|
3933
|
+
rescue
|
3934
|
+
|
3935
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
3936
|
+
sleep(3)
|
3937
|
+
end
|
3938
|
+
end
|
3639
3939
|
end
|
3640
3940
|
end
|
3641
3941
|
end
|
@@ -3652,11 +3952,14 @@ login_url = option['login_url'].to_s
|
|
3652
3952
|
end
|
3653
3953
|
##로그인 버튼 코드 부분─────────────────────────────────────────────────────────────────────<
|
3654
3954
|
|
3955
|
+
|
3956
|
+
|
3655
3957
|
# Alert 처리 부분
|
3656
3958
|
begin
|
3657
3959
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
3658
3960
|
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
3659
3961
|
alert.accept # 알림을 확인
|
3962
|
+
sleep(1)
|
3660
3963
|
rescue
|
3661
3964
|
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
3662
3965
|
end
|
@@ -3667,7 +3970,7 @@ login_url = option['login_url'].to_s
|
|
3667
3970
|
|
3668
3971
|
|
3669
3972
|
rescue => e
|
3670
|
-
puts '-[√] 로그인 PASS.......'.cyan
|
3973
|
+
#puts '-[√] 로그인 PASS.......'.cyan
|
3671
3974
|
puts e
|
3672
3975
|
end
|
3673
3976
|
|
@@ -3685,57 +3988,68 @@ begin
|
|
3685
3988
|
|
3686
3989
|
else
|
3687
3990
|
|
3991
|
+
@driver.get(cc_check_url)
|
3992
|
+
puts '-[√] 출석 체크 페이지 URL 이동.......'.magenta
|
3993
|
+
|
3994
|
+
|
3995
|
+
|
3996
|
+
|
3997
|
+
|
3688
3998
|
begin
|
3689
|
-
|
3690
|
-
|
3691
|
-
|
3692
|
-
|
3693
|
-
puts '-[√] 출석체크 페이지 URL 이동.......'.magenta
|
3694
|
-
# Alert 처리 부분
|
3695
|
-
begin
|
3696
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
3697
|
-
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
3698
|
-
alert.accept # 알림을 확인
|
3699
|
-
rescue
|
3700
|
-
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
3701
|
-
end
|
3702
|
-
|
3703
|
-
rescue Selenium::WebDriver::Error::UnknownError => e
|
3704
|
-
puts "#{cc_check_url} 해당 사이트의 문제로 접속이 불가능합니다." # 오류 메시지 출력
|
3705
|
-
# 열린 모든 창을 닫음
|
3706
|
-
@driver.window_handles.each do |handle|
|
3707
|
-
@driver.switch_to.window(handle)
|
3708
|
-
begin
|
3709
|
-
@driver.close
|
3710
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
3711
|
-
puts "사이트 내부에 예외 발생: #{e.message}"
|
3712
|
-
end
|
3713
|
-
end
|
3714
|
-
|
3715
|
-
# 드라이버 종료
|
3999
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
4000
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
4001
|
+
if error_text
|
4002
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
3716
4003
|
@driver.quit if @driver
|
3717
|
-
return 0
|
3718
|
-
|
3719
|
-
|
3720
|
-
|
4004
|
+
return 0
|
4005
|
+
end
|
4006
|
+
rescue
|
4007
|
+
end
|
4008
|
+
|
4009
|
+
begin
|
4010
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
4011
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
|
4012
|
+
if error_text
|
4013
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
3721
4014
|
@driver.quit if @driver
|
3722
4015
|
return 0
|
3723
|
-
|
3724
|
-
rescue
|
3725
4016
|
end
|
4017
|
+
rescue
|
4018
|
+
end
|
3726
4019
|
|
3727
|
-
|
4020
|
+
begin
|
4021
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 2) # 3초 대기
|
4022
|
+
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
4023
|
+
alert.accept # 알림을 확인
|
4024
|
+
rescue
|
4025
|
+
end
|
3728
4026
|
|
4027
|
+
|
3729
4028
|
|
3730
4029
|
sleep(1)
|
4030
|
+
#오른쪽 마우스 해제 코드
|
4031
|
+
begin
|
4032
|
+
@driver.execute_script <<-JS
|
4033
|
+
document.querySelectorAll('body').forEach(function(element) {
|
4034
|
+
element.oncontextmenu = null;
|
4035
|
+
});
|
4036
|
+
document.removeEventListener('contextmenu', function(e) { e.preventDefault(); }, false);
|
4037
|
+
JS
|
4038
|
+
|
4039
|
+
@driver.execute_script <<-JS
|
4040
|
+
document.addEventListener('contextmenu', function(e) {
|
4041
|
+
e.stopImmediatePropagation();
|
4042
|
+
}, true);
|
4043
|
+
JS
|
4044
|
+
|
4045
|
+
@driver.execute_script("window.oncontextmenu = null;")
|
4046
|
+
rescue
|
4047
|
+
end
|
3731
4048
|
##캡챠 해제 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
3732
4049
|
begin
|
3733
|
-
|
3734
|
-
|
3735
|
-
|
3736
|
-
sleep(1)
|
3737
|
-
puts '-[√] 3 캡챠 발생 유무 확인.......'.green
|
3738
|
-
sleep(1)
|
4050
|
+
sleep(5)
|
4051
|
+
|
4052
|
+
|
3739
4053
|
# 타임아웃을 3초로 설정
|
3740
4054
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
3741
4055
|
# 요소가 나타날 때까지 30초 동안 기다립니다.
|
@@ -3774,7 +4088,7 @@ begin
|
|
3774
4088
|
end
|
3775
4089
|
##<─────────────────────────────────────────────────────────────────────캡챠 해제 입력 코드 부분
|
3776
4090
|
|
3777
|
-
|
4091
|
+
begin
|
3778
4092
|
# 요소 찾기 타임아웃을 10초로 설정
|
3779
4093
|
wait = Selenium::WebDriver::Wait.new(:timeout => 20)
|
3780
4094
|
#요소가 나타날 때까지 20초 동안 기다립니다.
|
@@ -3799,6 +4113,19 @@ begin
|
|
3799
4113
|
end
|
3800
4114
|
end
|
3801
4115
|
|
4116
|
+
begin
|
4117
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
4118
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
4119
|
+
if error_text
|
4120
|
+
puts '사이트에 연결할 수 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
|
4121
|
+
@driver.quit if @driver
|
4122
|
+
return 0
|
4123
|
+
end
|
4124
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
4125
|
+
# 해당 텍스트가 없으면 아무 작업 안함
|
4126
|
+
end
|
4127
|
+
|
4128
|
+
|
3802
4129
|
##출석 체크 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
3803
4130
|
cctxt_value = ['ㅊㅊ','출석체크','출석 체크해요','출첵~','추추','출석~','출석 체크 하고 가요','출석 체크 합니다.','안녕하세요','출첵왔어요','출석체크합니다.','출석체크~','출석했어요','출첵!!','출석 체크~,','출석 도장 쾅~!','출석 도장 쾅쾅!!','출석 하고 가요','출첵^^*','출석 체크~!^^','^^','^*^','출첵*_*','추추^^*'].sample
|
3804
4131
|
begin
|
@@ -3909,6 +4236,7 @@ begin
|
|
3909
4236
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
3910
4237
|
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
3911
4238
|
alert.accept # 알림을 확인
|
4239
|
+
sleep(1)
|
3912
4240
|
rescue
|
3913
4241
|
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
3914
4242
|
end
|
@@ -3925,71 +4253,67 @@ end
|
|
3925
4253
|
|
3926
4254
|
|
3927
4255
|
|
3928
|
-
|
4256
|
+
post_url = option['post_url'].to_s
|
3929
4257
|
|
3930
4258
|
begin
|
3931
4259
|
if post_url == '' or post_url == '게시판 글쓰기 url'
|
3932
4260
|
|
3933
4261
|
else
|
3934
|
-
|
4262
|
+
@driver.get(post_url)
|
4263
|
+
puts '-[√] 게시판 페이지 URL 이동.......'.magenta
|
4264
|
+
|
4265
|
+
|
4266
|
+
|
4267
|
+
|
4268
|
+
|
3935
4269
|
begin
|
3936
|
-
|
3937
|
-
|
3938
|
-
|
3939
|
-
|
3940
|
-
puts '-[√] 글쓰기 페이지 URL 이동.......'.magenta
|
3941
|
-
# Alert 처리 부분
|
3942
|
-
begin
|
3943
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 3) # 3초 대기
|
3944
|
-
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
3945
|
-
alert.accept # 알림을 확인
|
3946
|
-
rescue
|
3947
|
-
# 알림이 나타나지 않으면 예외 처리하고 넘어감
|
3948
|
-
end
|
3949
|
-
|
3950
|
-
rescue Selenium::WebDriver::Error::UnknownError => e
|
3951
|
-
puts "#{post_url} 해당 사이트의 문제로 접속이 불가능합니다." # 오류 메시지 출력
|
3952
|
-
# 열린 모든 창을 닫음
|
3953
|
-
@driver.window_handles.each do |handle|
|
3954
|
-
@driver.switch_to.window(handle)
|
3955
|
-
begin
|
3956
|
-
@driver.close
|
3957
|
-
rescue Selenium::WebDriver::Error::WebDriverError => e
|
3958
|
-
puts "사이트 내부에 예외 발생: #{e.message}"
|
3959
|
-
end
|
3960
|
-
end
|
3961
|
-
|
3962
|
-
# 드라이버 종료
|
3963
|
-
@driver.quit if @driver
|
3964
|
-
return 0
|
3965
|
-
|
3966
|
-
rescue Selenium::WebDriver::Error::TimeoutError => e
|
3967
|
-
puts "웹 페이지 로드가 시간 초과되었습니다: #{e.message}"
|
4270
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
4271
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
4272
|
+
if error_text
|
4273
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
3968
4274
|
@driver.quit if @driver
|
3969
4275
|
return 0
|
3970
|
-
|
3971
|
-
rescue
|
3972
4276
|
end
|
4277
|
+
rescue
|
4278
|
+
end
|
3973
4279
|
|
4280
|
+
begin
|
4281
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
4282
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
|
4283
|
+
if error_text
|
4284
|
+
puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
|
4285
|
+
@driver.quit if @driver
|
4286
|
+
return 0
|
4287
|
+
end
|
4288
|
+
rescue
|
4289
|
+
end
|
3974
4290
|
|
4291
|
+
begin
|
4292
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 2) # 3초 대기
|
4293
|
+
alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
|
4294
|
+
alert.accept # 알림을 확인
|
4295
|
+
rescue
|
4296
|
+
end
|
3975
4297
|
|
3976
|
-
|
4298
|
+
|
3977
4299
|
sleep(1)
|
4300
|
+
|
4301
|
+
|
3978
4302
|
begin
|
3979
|
-
|
4303
|
+
|
3980
4304
|
el_post_btn = @driver.find_element(:xpath, '//*[@class="btn btn-primary btn-sm float_r"]')
|
3981
4305
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", el_post_btn)
|
3982
4306
|
sleep(1)
|
3983
4307
|
@driver.find_element(:xpath, '//*[@class="btn btn-primary btn-sm float_r"]').click
|
3984
4308
|
sleep(3.7)
|
3985
|
-
puts '-[√] 글쓰기 버튼 code 1
|
4309
|
+
puts '-[√] 글쓰기 버튼 클릭 확인 code 1 타겟.......'.green
|
3986
4310
|
rescue
|
3987
4311
|
begin
|
3988
4312
|
el_post_btn = @driver.find_element(:xpath, '//*[@class="btn-block-right"]')
|
3989
4313
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", el_post_btn)
|
3990
4314
|
sleep(1)
|
3991
4315
|
@driver.find_element(:xpath, '//*[@class="btn-block-right"]').click
|
3992
|
-
puts '-[√] 글쓰기 버튼 code 2
|
4316
|
+
puts '-[√] 글쓰기 버튼 클릭 확인 code 2 타겟.......'.green
|
3993
4317
|
sleep(3.7)
|
3994
4318
|
rescue
|
3995
4319
|
begin
|
@@ -3997,7 +4321,7 @@ login_url = option['login_url'].to_s
|
|
3997
4321
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", el_post_btn)
|
3998
4322
|
sleep(1)
|
3999
4323
|
@driver.find_element(:xpath, '//*[@class="write_btn"]').click
|
4000
|
-
puts '-[√] 글쓰기 버튼 code 3
|
4324
|
+
puts '-[√] 글쓰기 버튼 클릭 확인 code 3 타겟.......'.green
|
4001
4325
|
sleep(3.7)
|
4002
4326
|
rescue
|
4003
4327
|
begin
|
@@ -4005,7 +4329,7 @@ login_url = option['login_url'].to_s
|
|
4005
4329
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", el_post_btn)
|
4006
4330
|
sleep(1)
|
4007
4331
|
@driver.find_element(:xpath, '//*[@class="gRight"]').click
|
4008
|
-
puts '-[√] 글쓰기 버튼 code 4
|
4332
|
+
puts '-[√] 글쓰기 버튼 클릭 확인 code 4 타겟.......'.green
|
4009
4333
|
sleep(3.7)
|
4010
4334
|
rescue
|
4011
4335
|
|
@@ -4013,18 +4337,33 @@ login_url = option['login_url'].to_s
|
|
4013
4337
|
end
|
4014
4338
|
end
|
4015
4339
|
end
|
4016
|
-
|
4340
|
+
|
4017
4341
|
sleep(1)
|
4342
|
+
#오른쪽 마우스 해제 코드
|
4343
|
+
begin
|
4344
|
+
@driver.execute_script <<-JS
|
4345
|
+
document.querySelectorAll('body').forEach(function(element) {
|
4346
|
+
element.oncontextmenu = null;
|
4347
|
+
});
|
4348
|
+
document.removeEventListener('contextmenu', function(e) { e.preventDefault(); }, false);
|
4349
|
+
JS
|
4018
4350
|
|
4019
|
-
|
4351
|
+
@driver.execute_script <<-JS
|
4352
|
+
document.addEventListener('contextmenu', function(e) {
|
4353
|
+
e.stopImmediatePropagation();
|
4354
|
+
}, true);
|
4355
|
+
JS
|
4356
|
+
|
4357
|
+
@driver.execute_script("window.oncontextmenu = null;")
|
4358
|
+
rescue
|
4359
|
+
end
|
4360
|
+
|
4361
|
+
##캡챠 해제 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
4020
4362
|
|
4021
|
-
puts '-[√] 1 캡챠 발생 유무 확인.......'.green
|
4022
|
-
sleep(1)
|
4023
|
-
puts '-[√] 2 캡챠 발생 유무 확인.......'.green
|
4024
|
-
sleep(1)
|
4025
|
-
puts '-[√] 3 캡챠 발생 유무 확인.......'.green
|
4026
|
-
sleep(1)
|
4027
4363
|
|
4364
|
+
sleep(5)
|
4365
|
+
|
4366
|
+
|
4028
4367
|
begin
|
4029
4368
|
@driver.find_element(:xpath, '//*[@class="amzn-captcha-state-container"]')
|
4030
4369
|
puts '-[√] 아임웹 캡챠 확인!! 해제 실행.......'.green
|
@@ -4061,7 +4400,7 @@ login_url = option['login_url'].to_s
|
|
4061
4400
|
wait.until { @driver.find_elements(:xpath, '//*[@id="amzn-captcha-verify-button"]').size == 0 }
|
4062
4401
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
4063
4402
|
|
4064
|
-
sleep(
|
4403
|
+
sleep(5)
|
4065
4404
|
rescue => e
|
4066
4405
|
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
4067
4406
|
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
@@ -4108,7 +4447,7 @@ login_url = option['login_url'].to_s
|
|
4108
4447
|
|
4109
4448
|
#@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
4110
4449
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
4111
|
-
sleep(
|
4450
|
+
sleep(5)
|
4112
4451
|
rescue => e
|
4113
4452
|
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
4114
4453
|
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
@@ -4152,7 +4491,7 @@ login_url = option['login_url'].to_s
|
|
4152
4491
|
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
4153
4492
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
4154
4493
|
|
4155
|
-
sleep(
|
4494
|
+
sleep(5)
|
4156
4495
|
rescue => e
|
4157
4496
|
puts '-[√] 캡챠 해제 실패(캡챠는 사람이 풀기에 간혹 실수로 실패가 될수있습니다.).......'.red
|
4158
4497
|
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
@@ -4162,7 +4501,7 @@ login_url = option['login_url'].to_s
|
|
4162
4501
|
end
|
4163
4502
|
end
|
4164
4503
|
rescue
|
4165
|
-
|
4504
|
+
|
4166
4505
|
end
|
4167
4506
|
end
|
4168
4507
|
end
|
@@ -4201,6 +4540,7 @@ login_url = option['login_url'].to_s
|
|
4201
4540
|
rescue => e
|
4202
4541
|
begin
|
4203
4542
|
@driver.switch_to.alert.accept
|
4543
|
+
sleep(1)
|
4204
4544
|
rescue
|
4205
4545
|
end
|
4206
4546
|
puts '-[√] 글쓰기 페이지 접속 시도 실패 (페이지 로딩 지연 및 접속 불량).......'.red
|
@@ -4216,7 +4556,20 @@ login_url = option['login_url'].to_s
|
|
4216
4556
|
sleep(2)
|
4217
4557
|
rescue
|
4218
4558
|
end
|
4219
|
-
|
4559
|
+
|
4560
|
+
begin
|
4561
|
+
# 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
|
4562
|
+
error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
|
4563
|
+
if error_text
|
4564
|
+
puts '사이트에 연결할 수 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
|
4565
|
+
@driver.quit if @driver
|
4566
|
+
return 0
|
4567
|
+
end
|
4568
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
4569
|
+
# 해당 텍스트가 없으면 아무 작업 안함
|
4570
|
+
end
|
4571
|
+
|
4572
|
+
|
4220
4573
|
|
4221
4574
|
begin
|
4222
4575
|
chat_box = @driver.find_element(:xpath, '//*[@class="adsbygoogle adsbygoogle-noablate"]')
|
@@ -4350,69 +4703,82 @@ login_url = option['login_url'].to_s
|
|
4350
4703
|
rescue
|
4351
4704
|
end
|
4352
4705
|
|
4353
|
-
|
4354
4706
|
end
|
4355
4707
|
|
4356
4708
|
|
4357
4709
|
|
4358
4710
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
4359
|
-
|
4711
|
+
|
4360
4712
|
|
4361
4713
|
begin
|
4362
4714
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4363
4715
|
sleep(1)
|
4716
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4364
4717
|
rescue
|
4365
4718
|
begin
|
4366
4719
|
@driver.find_element(:xpath, '//*[@class="permanentClose"]').click
|
4367
4720
|
sleep(1)
|
4721
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4368
4722
|
rescue
|
4369
4723
|
begin
|
4370
4724
|
@driver.find_element(:xpath, '//*[@class="close"]').click
|
4371
4725
|
sleep(1)
|
4726
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4372
4727
|
rescue
|
4373
4728
|
begin
|
4374
4729
|
@driver.find_element(:partial_link_text, '닫기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4375
4730
|
sleep(1)
|
4731
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4376
4732
|
rescue
|
4377
4733
|
begin
|
4378
4734
|
@driver.find_element(:xpath, '//*[@class="fas fa-angle-down"]').click
|
4379
4735
|
sleep(1)
|
4736
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4380
4737
|
rescue
|
4381
4738
|
begin
|
4382
4739
|
@driver.find_element(:xpath, '//*[@class="fa fa-check-square-o"]').click
|
4383
4740
|
sleep(1)
|
4741
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4384
4742
|
rescue
|
4385
4743
|
begin
|
4386
4744
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
4387
4745
|
sleep(1)
|
4746
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4388
4747
|
rescue
|
4389
4748
|
begin
|
4390
4749
|
@driver.find_element(:xpath, '//*[@alt="Close"]').click
|
4391
4750
|
sleep(1)
|
4751
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4392
4752
|
rescue
|
4393
4753
|
begin
|
4394
4754
|
@driver.find_element(:xpath, '//*[@class="sgpb-popup-close-button-1"]').click
|
4395
4755
|
sleep(1)
|
4756
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4396
4757
|
rescue
|
4397
4758
|
begin
|
4398
4759
|
@driver.find_element(:partial_link_text, '시간 동안 다시 열람하지 않습니다.').click
|
4399
4760
|
sleep(1)
|
4761
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4400
4762
|
rescue
|
4401
4763
|
begin
|
4402
4764
|
@driver.find_element(:xpath, '//*[@class="btn skip"]').click
|
4403
4765
|
sleep(1)
|
4766
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4404
4767
|
rescue
|
4405
4768
|
begin
|
4406
4769
|
@driver.find_element(:xpath, '//*[@stroke="#FAFAFA"]').click
|
4407
4770
|
sleep(1)
|
4771
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4408
4772
|
rescue
|
4409
4773
|
begin
|
4410
4774
|
@driver.find_element(:xpath, '//*[@fill="#FAFAFA"]').click
|
4411
4775
|
sleep(1)
|
4776
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4412
4777
|
rescue
|
4413
4778
|
begin
|
4414
4779
|
@driver.find_element(:xpath, '//*[@stroke-linecap="square"]').click
|
4415
4780
|
sleep(1)
|
4781
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4416
4782
|
rescue
|
4417
4783
|
begin
|
4418
4784
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@title="Advertisement"]'))
|
@@ -4421,29 +4787,35 @@ login_url = option['login_url'].to_s
|
|
4421
4787
|
sleep(1)
|
4422
4788
|
@driver.switch_to.default_content()
|
4423
4789
|
sleep(1)
|
4790
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4424
4791
|
rescue
|
4425
4792
|
begin
|
4426
4793
|
@driver.find_element(:xpath, '//*[@id="footer-btn-icon"]').click
|
4427
4794
|
sleep(1)
|
4795
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4428
4796
|
rescue
|
4429
4797
|
begin
|
4430
4798
|
@driver.find_element(:xpath, '//*[@id="dismiss-button"]').click
|
4431
4799
|
sleep(1)
|
4800
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4432
4801
|
rescue
|
4433
4802
|
begin
|
4434
4803
|
@driver.find_element(:xpath, '//*[@id="banner"]/div[1]/div/div[1]').click
|
4435
4804
|
sleep(1)
|
4805
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4436
4806
|
rescue
|
4437
4807
|
|
4438
4808
|
begin
|
4439
4809
|
@driver.find_element(:xpath, '//*[@id="hd_pops_1"]/div[2]/button[1]').click
|
4440
4810
|
sleep(1)
|
4811
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4441
4812
|
rescue
|
4442
4813
|
begin
|
4443
4814
|
@driver.find_element(:xpath, '//*[@class="modal_close"]').click
|
4444
4815
|
sleep(1)
|
4816
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4445
4817
|
rescue
|
4446
|
-
|
4818
|
+
|
4447
4819
|
|
4448
4820
|
end
|
4449
4821
|
|
@@ -4474,63 +4846,77 @@ login_url = option['login_url'].to_s
|
|
4474
4846
|
|
4475
4847
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
4476
4848
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
4477
|
-
|
4849
|
+
|
4478
4850
|
|
4479
4851
|
begin
|
4480
4852
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4481
4853
|
sleep(1)
|
4854
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4482
4855
|
rescue
|
4483
4856
|
begin
|
4484
4857
|
@driver.find_element(:xpath, '//*[@class="permanentClose"]').click
|
4485
4858
|
sleep(1)
|
4859
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4486
4860
|
rescue
|
4487
4861
|
begin
|
4488
4862
|
@driver.find_element(:xpath, '//*[@class="close"]').click
|
4489
4863
|
sleep(1)
|
4864
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4490
4865
|
rescue
|
4491
4866
|
begin
|
4492
4867
|
@driver.find_element(:partial_link_text, '닫기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4493
4868
|
sleep(1)
|
4869
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4494
4870
|
rescue
|
4495
4871
|
begin
|
4496
4872
|
@driver.find_element(:xpath, '//*[@class="fas fa-angle-down"]').click
|
4497
4873
|
sleep(1)
|
4874
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4498
4875
|
rescue
|
4499
4876
|
begin
|
4500
4877
|
@driver.find_element(:xpath, '//*[@class="fa fa-check-square-o"]').click
|
4501
4878
|
sleep(1)
|
4879
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4502
4880
|
rescue
|
4503
4881
|
begin
|
4504
4882
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
4505
4883
|
sleep(1)
|
4884
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4506
4885
|
rescue
|
4507
4886
|
begin
|
4508
4887
|
@driver.find_element(:xpath, '//*[@alt="Close"]').click
|
4509
4888
|
sleep(1)
|
4889
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4510
4890
|
rescue
|
4511
4891
|
begin
|
4512
4892
|
@driver.find_element(:xpath, '//*[@class="sgpb-popup-close-button-1"]').click
|
4513
4893
|
sleep(1)
|
4894
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4514
4895
|
rescue
|
4515
4896
|
begin
|
4516
4897
|
@driver.find_element(:partial_link_text, '시간 동안 다시 열람하지 않습니다.').click
|
4517
4898
|
sleep(1)
|
4899
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4518
4900
|
rescue
|
4519
4901
|
begin
|
4520
4902
|
@driver.find_element(:xpath, '//*[@class="btn skip"]').click
|
4521
4903
|
sleep(1)
|
4904
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4522
4905
|
rescue
|
4523
4906
|
begin
|
4524
4907
|
@driver.find_element(:xpath, '//*[@stroke="#FAFAFA"]').click
|
4525
4908
|
sleep(1)
|
4909
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4526
4910
|
rescue
|
4527
4911
|
begin
|
4528
4912
|
@driver.find_element(:xpath, '//*[@fill="#FAFAFA"]').click
|
4529
4913
|
sleep(1)
|
4914
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4530
4915
|
rescue
|
4531
4916
|
begin
|
4532
4917
|
@driver.find_element(:xpath, '//*[@stroke-linecap="square"]').click
|
4533
4918
|
sleep(1)
|
4919
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4534
4920
|
rescue
|
4535
4921
|
begin
|
4536
4922
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@title="Advertisement"]'))
|
@@ -4539,25 +4925,29 @@ login_url = option['login_url'].to_s
|
|
4539
4925
|
sleep(1)
|
4540
4926
|
@driver.switch_to.default_content()
|
4541
4927
|
sleep(1)
|
4928
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4542
4929
|
rescue
|
4543
4930
|
begin
|
4544
4931
|
@driver.find_element(:xpath, '//*[@id="footer-btn-icon"]').click
|
4545
4932
|
sleep(1)
|
4933
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4546
4934
|
rescue
|
4547
4935
|
begin
|
4548
4936
|
@driver.find_element(:xpath, '//*[@id="dismiss-button"]').click
|
4549
4937
|
sleep(1)
|
4938
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4550
4939
|
rescue
|
4551
4940
|
begin
|
4552
4941
|
@driver.find_element(:xpath, '//*[@id="banner"]/div[2]/div/div[1]').click
|
4553
4942
|
sleep(1)
|
4943
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4554
4944
|
rescue
|
4555
4945
|
begin
|
4556
4946
|
@driver.find_element(:xpath, '//*[@id="hd_pops_2"]/div[2]/button[1]').click
|
4557
4947
|
sleep(1)
|
4558
|
-
|
4948
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4559
4949
|
rescue
|
4560
|
-
|
4950
|
+
|
4561
4951
|
|
4562
4952
|
end
|
4563
4953
|
|
@@ -4587,63 +4977,76 @@ login_url = option['login_url'].to_s
|
|
4587
4977
|
end
|
4588
4978
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
4589
4979
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
4590
|
-
puts '-[√] 팝업 여부 확인 체크 03.......'.yellow
|
4591
4980
|
|
4592
4981
|
begin
|
4593
4982
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4594
4983
|
sleep(1)
|
4984
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4595
4985
|
rescue
|
4596
4986
|
begin
|
4597
4987
|
@driver.find_element(:xpath, '//*[@class="permanentClose"]').click
|
4598
4988
|
sleep(1)
|
4989
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4599
4990
|
rescue
|
4600
4991
|
begin
|
4601
4992
|
@driver.find_element(:xpath, '//*[@class="close"]').click
|
4602
4993
|
sleep(1)
|
4994
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4603
4995
|
rescue
|
4604
4996
|
begin
|
4605
4997
|
@driver.find_element(:partial_link_text, '닫기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4606
4998
|
sleep(1)
|
4999
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4607
5000
|
rescue
|
4608
5001
|
begin
|
4609
5002
|
@driver.find_element(:xpath, '//*[@class="fas fa-angle-down"]').click
|
4610
5003
|
sleep(1)
|
5004
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4611
5005
|
rescue
|
4612
5006
|
begin
|
4613
5007
|
@driver.find_element(:xpath, '//*[@class="fa fa-check-square-o"]').click
|
4614
5008
|
sleep(1)
|
5009
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4615
5010
|
rescue
|
4616
5011
|
begin
|
4617
5012
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
4618
5013
|
sleep(1)
|
5014
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4619
5015
|
rescue
|
4620
5016
|
begin
|
4621
5017
|
@driver.find_element(:xpath, '//*[@alt="Close"]').click
|
4622
5018
|
sleep(1)
|
5019
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4623
5020
|
rescue
|
4624
5021
|
begin
|
4625
5022
|
@driver.find_element(:xpath, '//*[@class="sgpb-popup-close-button-1"]').click
|
4626
5023
|
sleep(1)
|
5024
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4627
5025
|
rescue
|
4628
5026
|
begin
|
4629
5027
|
@driver.find_element(:partial_link_text, '시간 동안 다시 열람하지 않습니다.').click
|
4630
5028
|
sleep(1)
|
5029
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4631
5030
|
rescue
|
4632
5031
|
begin
|
4633
5032
|
@driver.find_element(:xpath, '//*[@class="btn skip"]').click
|
4634
5033
|
sleep(1)
|
5034
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4635
5035
|
rescue
|
4636
5036
|
begin
|
4637
5037
|
@driver.find_element(:xpath, '//*[@stroke="#FAFAFA"]').click
|
4638
5038
|
sleep(1)
|
5039
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4639
5040
|
rescue
|
4640
5041
|
begin
|
4641
5042
|
@driver.find_element(:xpath, '//*[@fill="#FAFAFA"]').click
|
4642
5043
|
sleep(1)
|
5044
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4643
5045
|
rescue
|
4644
5046
|
begin
|
4645
5047
|
@driver.find_element(:xpath, '//*[@stroke-linecap="square"]').click
|
4646
5048
|
sleep(1)
|
5049
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4647
5050
|
rescue
|
4648
5051
|
begin
|
4649
5052
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@title="Advertisement"]'))
|
@@ -4652,24 +5055,29 @@ login_url = option['login_url'].to_s
|
|
4652
5055
|
sleep(1)
|
4653
5056
|
@driver.switch_to.default_content()
|
4654
5057
|
sleep(1)
|
5058
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4655
5059
|
rescue
|
4656
5060
|
begin
|
4657
5061
|
@driver.find_element(:xpath, '//*[@id="footer-btn-icon"]').click
|
4658
5062
|
sleep(1)
|
5063
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4659
5064
|
rescue
|
4660
5065
|
begin
|
4661
5066
|
@driver.find_element(:xpath, '//*[@id="dismiss-button"]').click
|
4662
5067
|
sleep(1)
|
5068
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4663
5069
|
rescue
|
4664
5070
|
begin
|
4665
5071
|
@driver.find_element(:xpath, '//*[@id="banner"]/div[3]/div/div[1]').click
|
4666
5072
|
sleep(1)
|
5073
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4667
5074
|
rescue
|
4668
5075
|
begin
|
4669
5076
|
@driver.find_element(:xpath, '//*[@id="hd_pops_3"]/div[2]/button[1]').click
|
4670
5077
|
sleep(1)
|
5078
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4671
5079
|
rescue
|
4672
|
-
|
5080
|
+
|
4673
5081
|
|
4674
5082
|
end
|
4675
5083
|
|
@@ -4699,63 +5107,77 @@ login_url = option['login_url'].to_s
|
|
4699
5107
|
end
|
4700
5108
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
4701
5109
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
4702
|
-
|
5110
|
+
|
4703
5111
|
|
4704
5112
|
begin
|
4705
5113
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4706
5114
|
sleep(1)
|
5115
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4707
5116
|
rescue
|
4708
5117
|
begin
|
4709
5118
|
@driver.find_element(:xpath, '//*[@class="permanentClose"]').click
|
4710
5119
|
sleep(1)
|
5120
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4711
5121
|
rescue
|
4712
5122
|
begin
|
4713
5123
|
@driver.find_element(:xpath, '//*[@class="close"]').click
|
4714
5124
|
sleep(1)
|
5125
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4715
5126
|
rescue
|
4716
5127
|
begin
|
4717
5128
|
@driver.find_element(:partial_link_text, '닫기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4718
5129
|
sleep(1)
|
5130
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4719
5131
|
rescue
|
4720
5132
|
begin
|
4721
5133
|
@driver.find_element(:xpath, '//*[@class="fas fa-angle-down"]').click
|
4722
5134
|
sleep(1)
|
5135
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4723
5136
|
rescue
|
4724
5137
|
begin
|
4725
5138
|
@driver.find_element(:xpath, '//*[@class="fa fa-check-square-o"]').click
|
4726
5139
|
sleep(1)
|
5140
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4727
5141
|
rescue
|
4728
5142
|
begin
|
4729
5143
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
4730
5144
|
sleep(1)
|
5145
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4731
5146
|
rescue
|
4732
5147
|
begin
|
4733
5148
|
@driver.find_element(:xpath, '//*[@alt="Close"]').click
|
4734
5149
|
sleep(1)
|
5150
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4735
5151
|
rescue
|
4736
5152
|
begin
|
4737
5153
|
@driver.find_element(:xpath, '//*[@class="sgpb-popup-close-button-1"]').click
|
4738
5154
|
sleep(1)
|
5155
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4739
5156
|
rescue
|
4740
5157
|
begin
|
4741
5158
|
@driver.find_element(:partial_link_text, '시간 동안 다시 열람하지 않습니다.').click
|
4742
5159
|
sleep(1)
|
5160
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4743
5161
|
rescue
|
4744
5162
|
begin
|
4745
5163
|
@driver.find_element(:xpath, '//*[@class="btn skip"]').click
|
4746
5164
|
sleep(1)
|
5165
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4747
5166
|
rescue
|
4748
5167
|
begin
|
4749
5168
|
@driver.find_element(:xpath, '//*[@stroke="#FAFAFA"]').click
|
4750
5169
|
sleep(1)
|
5170
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4751
5171
|
rescue
|
4752
5172
|
begin
|
4753
5173
|
@driver.find_element(:xpath, '//*[@fill="#FAFAFA"]').click
|
4754
5174
|
sleep(1)
|
5175
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4755
5176
|
rescue
|
4756
5177
|
begin
|
4757
5178
|
@driver.find_element(:xpath, '//*[@stroke-linecap="square"]').click
|
4758
5179
|
sleep(1)
|
5180
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4759
5181
|
rescue
|
4760
5182
|
begin
|
4761
5183
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@title="Advertisement"]'))
|
@@ -4764,24 +5186,29 @@ login_url = option['login_url'].to_s
|
|
4764
5186
|
sleep(1)
|
4765
5187
|
@driver.switch_to.default_content()
|
4766
5188
|
sleep(1)
|
5189
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4767
5190
|
rescue
|
4768
5191
|
begin
|
4769
5192
|
@driver.find_element(:xpath, '//*[@id="footer-btn-icon"]').click
|
4770
5193
|
sleep(1)
|
5194
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4771
5195
|
rescue
|
4772
5196
|
begin
|
4773
5197
|
@driver.find_element(:xpath, '//*[@id="dismiss-button"]').click
|
4774
5198
|
sleep(1)
|
5199
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4775
5200
|
rescue
|
4776
5201
|
begin
|
4777
5202
|
@driver.find_element(:xpath, '//*[@id="banner"]/div[4]/div/div[1]').click
|
4778
5203
|
sleep(1)
|
5204
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4779
5205
|
rescue
|
4780
5206
|
begin
|
4781
5207
|
@driver.find_element(:xpath, '//*[@id="hd_pops_4"]/div[2]/button[1]').click
|
4782
5208
|
sleep(1)
|
5209
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4783
5210
|
rescue
|
4784
|
-
|
5211
|
+
|
4785
5212
|
|
4786
5213
|
end
|
4787
5214
|
|
@@ -4811,63 +5238,77 @@ login_url = option['login_url'].to_s
|
|
4811
5238
|
end
|
4812
5239
|
##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
|
4813
5240
|
##팝업 코드 확인 및 제거 부분─────────────────────────────────────────────────────────────────────>
|
4814
|
-
|
5241
|
+
|
4815
5242
|
|
4816
5243
|
begin
|
4817
5244
|
@driver.find_element(:partial_link_text, '더 이상 보지 않기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4818
5245
|
sleep(1)
|
5246
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4819
5247
|
rescue
|
4820
5248
|
begin
|
4821
5249
|
@driver.find_element(:xpath, '//*[@class="permanentClose"]').click
|
4822
5250
|
sleep(1)
|
5251
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4823
5252
|
rescue
|
4824
5253
|
begin
|
4825
5254
|
@driver.find_element(:xpath, '//*[@class="close"]').click
|
4826
5255
|
sleep(1)
|
5256
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4827
5257
|
rescue
|
4828
5258
|
begin
|
4829
5259
|
@driver.find_element(:partial_link_text, '닫기').click #요소같고 텍스트가 다를때 텍스트로 타겟
|
4830
5260
|
sleep(1)
|
5261
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4831
5262
|
rescue
|
4832
5263
|
begin
|
4833
5264
|
@driver.find_element(:xpath, '//*[@class="fas fa-angle-down"]').click
|
4834
5265
|
sleep(1)
|
5266
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4835
5267
|
rescue
|
4836
5268
|
begin
|
4837
5269
|
@driver.find_element(:xpath, '//*[@class="fa fa-check-square-o"]').click
|
4838
5270
|
sleep(1)
|
5271
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4839
5272
|
rescue
|
4840
5273
|
begin
|
4841
5274
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
4842
5275
|
sleep(1)
|
5276
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4843
5277
|
rescue
|
4844
5278
|
begin
|
4845
5279
|
@driver.find_element(:xpath, '//*[@alt="Close"]').click
|
4846
5280
|
sleep(1)
|
5281
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4847
5282
|
rescue
|
4848
5283
|
begin
|
4849
5284
|
@driver.find_element(:xpath, '//*[@class="sgpb-popup-close-button-1"]').click
|
4850
5285
|
sleep(1)
|
5286
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4851
5287
|
rescue
|
4852
5288
|
begin
|
4853
5289
|
@driver.find_element(:partial_link_text, '시간 동안 다시 열람하지 않습니다.').click
|
4854
5290
|
sleep(1)
|
5291
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4855
5292
|
rescue
|
4856
5293
|
begin
|
4857
5294
|
@driver.find_element(:xpath, '//*[@class="btn skip"]').click
|
4858
5295
|
sleep(1)
|
5296
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4859
5297
|
rescue
|
4860
5298
|
begin
|
4861
5299
|
@driver.find_element(:xpath, '//*[@stroke="#FAFAFA"]').click
|
4862
5300
|
sleep(1)
|
5301
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4863
5302
|
rescue
|
4864
5303
|
begin
|
4865
5304
|
@driver.find_element(:xpath, '//*[@fill="#FAFAFA"]').click
|
4866
5305
|
sleep(1)
|
5306
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4867
5307
|
rescue
|
4868
5308
|
begin
|
4869
5309
|
@driver.find_element(:xpath, '//*[@stroke-linecap="square"]').click
|
4870
5310
|
sleep(1)
|
5311
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4871
5312
|
rescue
|
4872
5313
|
begin
|
4873
5314
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@title="Advertisement"]'))
|
@@ -4876,22 +5317,27 @@ login_url = option['login_url'].to_s
|
|
4876
5317
|
sleep(1)
|
4877
5318
|
@driver.switch_to.default_content()
|
4878
5319
|
sleep(1)
|
5320
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4879
5321
|
rescue
|
4880
5322
|
begin
|
4881
5323
|
@driver.find_element(:xpath, '//*[@id="footer-btn-icon"]').click
|
4882
5324
|
sleep(1)
|
5325
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4883
5326
|
rescue
|
4884
5327
|
begin
|
4885
5328
|
@driver.find_element(:xpath, '//*[@id="dismiss-button"]').click
|
4886
5329
|
sleep(1)
|
5330
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4887
5331
|
rescue
|
4888
5332
|
begin
|
4889
5333
|
@driver.find_element(:xpath, '//*[@id="banner"]/div[5]/div/div[1]').click
|
4890
5334
|
sleep(1)
|
5335
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4891
5336
|
rescue
|
4892
5337
|
begin
|
4893
5338
|
@driver.find_element(:xpath, '//*[@id="hd_pops_5"]/div[2]/button[1]').click
|
4894
5339
|
sleep(1)
|
5340
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4895
5341
|
rescue
|
4896
5342
|
begin
|
4897
5343
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@id="aswift_1"]'))
|
@@ -4900,8 +5346,9 @@ login_url = option['login_url'].to_s
|
|
4900
5346
|
sleep(1)
|
4901
5347
|
@driver.switch_to.default_content
|
4902
5348
|
sleep(1)
|
5349
|
+
puts '-[√] 팝업 여부 확인 체크.......'.yellow
|
4903
5350
|
rescue
|
4904
|
-
|
5351
|
+
|
4905
5352
|
|
4906
5353
|
end
|
4907
5354
|
|
@@ -4939,7 +5386,6 @@ login_url = option['login_url'].to_s
|
|
4939
5386
|
|
4940
5387
|
|
4941
5388
|
##닉네임 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
4942
|
-
puts '-[√] 닉네임 입력 가능 여부 체크.......'.yellow
|
4943
5389
|
|
4944
5390
|
|
4945
5391
|
begin
|
@@ -5523,7 +5969,17 @@ begin
|
|
5523
5969
|
@driver.find_element(:xpath, '//*[@for="boardPrivacyCheck"]').click
|
5524
5970
|
sleep(1)
|
5525
5971
|
rescue
|
5526
|
-
|
5972
|
+
begin
|
5973
|
+
@driver.find_element(:xpath, '//*[@for="checkbox-nonMember"]').click
|
5974
|
+
sleep(1)
|
5975
|
+
rescue
|
5976
|
+
begin
|
5977
|
+
@driver.find_element(:xpath, '//*[@name="agree_chk"]').click
|
5978
|
+
sleep(1)
|
5979
|
+
rescue
|
5980
|
+
|
5981
|
+
end
|
5982
|
+
end
|
5527
5983
|
end
|
5528
5984
|
end
|
5529
5985
|
end
|
@@ -5557,6 +6013,19 @@ begin
|
|
5557
6013
|
rescue
|
5558
6014
|
end
|
5559
6015
|
|
6016
|
+
begin
|
6017
|
+
#요소 자체 제거 하기 기능
|
6018
|
+
|
6019
|
+
chat_box = @driver.find_element(:xpath, '//*[@title="reCAPTCHA"]')
|
6020
|
+
@driver.execute_script("arguments[0].remove();", chat_box)
|
6021
|
+
puts '방해 code 제거 완료.......'.green
|
6022
|
+
sleep(1)
|
6023
|
+
rescue
|
6024
|
+
end
|
6025
|
+
|
6026
|
+
|
6027
|
+
|
6028
|
+
|
5560
6029
|
|
5561
6030
|
title = title.strip
|
5562
6031
|
##제목 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
@@ -6101,6 +6570,7 @@ begin
|
|
6101
6570
|
begin
|
6102
6571
|
sleep(2)
|
6103
6572
|
@driver.switch_to.alert.accept
|
6573
|
+
sleep(1)
|
6104
6574
|
rescue
|
6105
6575
|
sleep(1)
|
6106
6576
|
end
|
@@ -6114,6 +6584,7 @@ begin
|
|
6114
6584
|
##내용 입력 필드 코드 부분─────────────────────────────────────────────────────────────────────>
|
6115
6585
|
#puts '-[√] 내용 입력 부분 탐색 시작.......'.yellow
|
6116
6586
|
#sleep(1)
|
6587
|
+
|
6117
6588
|
begin
|
6118
6589
|
@driver.find_element(:xpath, '//*[@name="content"]').click
|
6119
6590
|
sleep(1)
|
@@ -6167,6 +6638,11 @@ rescue
|
|
6167
6638
|
sleep(1)
|
6168
6639
|
puts '내용 항목 코드 타겟 9.......'.red
|
6169
6640
|
rescue
|
6641
|
+
begin
|
6642
|
+
@driver.find_element(:xpath, '//*[@class="kboard-content"]').click
|
6643
|
+
sleep(1)
|
6644
|
+
puts '내용 항목 코드 타겟 9-1.......'.red
|
6645
|
+
rescue
|
6170
6646
|
begin
|
6171
6647
|
#아이프레임에서 코드 선택
|
6172
6648
|
@driver.switch_to.frame(@driver.find_element(:xpath, '//*[@scrolling="no"]'))
|
@@ -6337,9 +6813,16 @@ rescue
|
|
6337
6813
|
sleep(1)
|
6338
6814
|
puts '내용 항목 코드 타겟 39.......'.red
|
6339
6815
|
rescue
|
6340
|
-
|
6816
|
+
begin
|
6817
|
+
@driver.find_element(:xpath, '//*[@class="kboard-attr-row kboard-attr-content required"]').click
|
6818
|
+
sleep(1)
|
6819
|
+
puts '내용 항목 코드 타겟 40.......'.red
|
6820
|
+
rescue
|
6821
|
+
|
6822
|
+
end
|
6341
6823
|
end
|
6342
6824
|
end
|
6825
|
+
end
|
6343
6826
|
end
|
6344
6827
|
end
|
6345
6828
|
end
|
@@ -6394,7 +6877,7 @@ rescue
|
|
6394
6877
|
end
|
6395
6878
|
##<<─────────────────────────────────────────────────────────────────────내용 임시부분 제거
|
6396
6879
|
|
6397
|
-
|
6880
|
+
|
6398
6881
|
puts content
|
6399
6882
|
noko = Nokogiri::HTML(content, nil, Encoding::UTF_8.to_s)
|
6400
6883
|
toomung = 0
|
@@ -6402,7 +6885,7 @@ end
|
|
6402
6885
|
|
6403
6886
|
sleep(1)
|
6404
6887
|
data = Hash.new
|
6405
|
-
|
6888
|
+
|
6406
6889
|
|
6407
6890
|
|
6408
6891
|
|
@@ -7376,42 +7859,106 @@ end
|
|
7376
7859
|
|
7377
7860
|
|
7378
7861
|
|
7379
|
-
|
7862
|
+
begin
|
7863
|
+
|
7864
|
+
@driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]')
|
7865
|
+
check_captcha = 1
|
7866
|
+
|
7867
|
+
rescue
|
7868
|
+
check_captcha = 0
|
7869
|
+
end
|
7870
|
+
|
7871
|
+
if check_captcha == 1
|
7872
|
+
begin
|
7873
|
+
# 타임아웃을 3초로 설정
|
7874
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
7875
|
+
# 요소가 나타날 때까지 30초 동안 기다립니다.
|
7876
|
+
wait.until { @driver.find_element(:xpath, '//*[@data-state="ready"]') }
|
7877
|
+
sleep(1)
|
7878
|
+
|
7879
|
+
el_ready = @driver.find_element(:xpath, '//*[@data-state="ready"]')
|
7880
|
+
@driver.action.move_to(el_ready).perform
|
7881
|
+
sleep(1)
|
7882
|
+
|
7883
|
+
puts '-[√] 캡챠 해제 진행 중 (약 30~60 초 소요됩니다).......'.green
|
7884
|
+
begin
|
7885
|
+
@driver.find_element(:xpath, '//*[@data-state="ready"]').click #캡챠우회버튼
|
7886
|
+
rescue
|
7887
|
+
begin
|
7888
|
+
@driver.find_element(:xpath, '//*[@class="captcha-solver-image"]').click #캡챠우회버튼
|
7889
|
+
rescue
|
7890
|
+
begin
|
7891
|
+
@driver.find_element(:xpath, '//*[@class="captcha-solver-info"]').click #캡챠우회버튼
|
7892
|
+
rescue
|
7893
|
+
begin
|
7894
|
+
@driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]').click #캡챠우회버튼
|
7895
|
+
rescue
|
7896
|
+
end
|
7897
|
+
end
|
7898
|
+
end
|
7899
|
+
end
|
7380
7900
|
|
7381
7901
|
|
7382
|
-
sleep(
|
7383
|
-
|
7384
|
-
|
7902
|
+
sleep(10)
|
7903
|
+
begin
|
7904
|
+
@driver.find_element(:xpath, '//*[@data-state="error"]').click
|
7905
|
+
puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
|
7906
|
+
puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
|
7907
|
+
@driver.window_handles.each do |handle|
|
7908
|
+
@driver.switch_to.window(handle)
|
7909
|
+
begin
|
7910
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
7911
|
+
@driver.close
|
7912
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
7913
|
+
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
7914
|
+
end
|
7915
|
+
end
|
7916
|
+
return 0
|
7917
|
+
@driver.quit
|
7918
|
+
rescue
|
7919
|
+
# 타임아웃을 77초로 설정
|
7920
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 150)
|
7921
|
+
# 요소가 나타날 때까지 100초 동안 기다립니다.
|
7922
|
+
wait.until { @driver.find_element(:xpath, '//*[@data-state="solved"]') }
|
7923
|
+
sleep(1)
|
7924
|
+
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
7925
|
+
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
7926
|
+
sleep(5)
|
7927
|
+
begin
|
7928
|
+
@driver.find_element(:xpath, '//*[@name="user_captcha"]').click
|
7929
|
+
sleep(1)
|
7930
|
+
@driver.action.key_down(:right).key_up(:right).perform
|
7931
|
+
rescue
|
7932
|
+
begin
|
7933
|
+
@driver.find_element(:xpath, '//*[@id="user_captcha"]').click
|
7934
|
+
sleep(1)
|
7935
|
+
@driver.action.key_down(:right).key_up(:right).perform
|
7936
|
+
rescue
|
7937
|
+
begin
|
7938
|
+
@driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]').click
|
7939
|
+
sleep(1)
|
7940
|
+
@driver.action.key_down(:right).key_up(:right).perform
|
7941
|
+
rescue
|
7942
|
+
end
|
7943
|
+
end
|
7944
|
+
end
|
7945
|
+
sleep(1)
|
7946
|
+
end
|
7947
|
+
rescue
|
7385
7948
|
|
7949
|
+
end
|
7950
|
+
else
|
7951
|
+
end
|
7386
7952
|
|
7387
|
-
|
7388
|
-
|
7389
|
-
#@driver.find_element(:xpath, '//*[@id="mb_kcaptcha"]')
|
7390
|
-
el = @driver.find_element(:xpath, '//*[@id="mb_kcaptcha"]')
|
7391
|
-
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7392
|
-
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7393
|
-
puts '-[√] 챕챠 코드 code 1.......'.red
|
7394
|
-
sleep(1)
|
7395
|
-
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7396
|
-
sleep(1)
|
7397
|
-
mouse_move_percentage(0.3,0.02)
|
7398
|
-
sleep(0.5)
|
7399
|
-
left_click
|
7400
|
-
sleep(1)
|
7401
|
-
@driver.switch_to.window(@driver.window_handle) #핸들 주입
|
7402
|
-
@driver.action.context_click(el).perform #우 클릭
|
7403
|
-
sleep(1)
|
7404
|
-
@driver.action.key_down(:shift).key_stroke('m').key_up(:shift).perform #단축키
|
7405
|
-
sleep(1)
|
7406
|
-
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
7407
|
-
rescue
|
7953
|
+
if check_captcha == 0
|
7954
|
+
puts'캡챠 유무 확인.......'.yellow
|
7408
7955
|
begin
|
7409
7956
|
@driver.switch_to.default_content()
|
7410
|
-
#@driver.find_element(:xpath, '//*[@
|
7411
|
-
el = @driver.find_element(:xpath, '//*[@
|
7957
|
+
#@driver.find_element(:xpath, '//*[@id="mb_kcaptcha"]')
|
7958
|
+
el = @driver.find_element(:xpath, '//*[@id="mb_kcaptcha"]')
|
7412
7959
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7413
7960
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7414
|
-
puts '-[√] 챕챠 코드 code
|
7961
|
+
puts '-[√] 챕챠 코드 code 1.......'.red
|
7415
7962
|
sleep(1)
|
7416
7963
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7417
7964
|
sleep(1)
|
@@ -7428,17 +7975,11 @@ rescue
|
|
7428
7975
|
rescue
|
7429
7976
|
begin
|
7430
7977
|
@driver.switch_to.default_content()
|
7431
|
-
#@driver.find_element(:xpath, '//*[@
|
7432
|
-
el = @driver.find_element(:xpath, '//*[@
|
7978
|
+
#@driver.find_element(:xpath, '//*[@alt="자동등록방지"]')
|
7979
|
+
el = @driver.find_element(:xpath, '//*[@alt="자동등록방지"]')
|
7433
7980
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7434
7981
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7435
|
-
puts '-[√] 챕챠 코드 code
|
7436
|
-
sleep(1)
|
7437
|
-
#요소 자체 제거 하기 기능
|
7438
|
-
chat_box = @driver.find_element(:xpath, '//*[@for="captcha_key"]')
|
7439
|
-
@driver.execute_script("arguments[0].remove();", chat_box)
|
7440
|
-
sleep(1)
|
7441
|
-
|
7982
|
+
puts '-[√] 챕챠 코드 code 2.......'.red
|
7442
7983
|
sleep(1)
|
7443
7984
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7444
7985
|
sleep(1)
|
@@ -7455,11 +7996,17 @@ rescue
|
|
7455
7996
|
rescue
|
7456
7997
|
begin
|
7457
7998
|
@driver.switch_to.default_content()
|
7458
|
-
#@driver.find_element(:xpath, '//*[@id="
|
7459
|
-
el = @driver.find_element(:xpath, '//*[@id="
|
7999
|
+
#@driver.find_element(:xpath, '//*[@id="captcha_img"]').send_keys(:tab)
|
8000
|
+
el = @driver.find_element(:xpath, '//*[@id="captcha_img"]')
|
7460
8001
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7461
8002
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7462
|
-
puts '-[√] 챕챠 코드 code
|
8003
|
+
puts '-[√] 챕챠 코드 code 3.......'.red
|
8004
|
+
sleep(1)
|
8005
|
+
#요소 자체 제거 하기 기능
|
8006
|
+
chat_box = @driver.find_element(:xpath, '//*[@for="captcha_key"]')
|
8007
|
+
@driver.execute_script("arguments[0].remove();", chat_box)
|
8008
|
+
sleep(1)
|
8009
|
+
|
7463
8010
|
sleep(1)
|
7464
8011
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7465
8012
|
sleep(1)
|
@@ -7476,10 +8023,11 @@ rescue
|
|
7476
8023
|
rescue
|
7477
8024
|
begin
|
7478
8025
|
@driver.switch_to.default_content()
|
7479
|
-
|
8026
|
+
#@driver.find_element(:xpath, '//*[@id="kcaptcha"]')
|
8027
|
+
el = @driver.find_element(:xpath, '//*[@id="kcaptcha"]')
|
7480
8028
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7481
8029
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7482
|
-
puts '-[√] 챕챠 코드 code
|
8030
|
+
puts '-[√] 챕챠 코드 code 4.......'.red
|
7483
8031
|
sleep(1)
|
7484
8032
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7485
8033
|
sleep(1)
|
@@ -7496,11 +8044,10 @@ rescue
|
|
7496
8044
|
rescue
|
7497
8045
|
begin
|
7498
8046
|
@driver.switch_to.default_content()
|
7499
|
-
|
7500
|
-
el = @driver.find_element(:xpath, '//*[@for="kboard-input-captcha"] img')
|
8047
|
+
el = @driver.find_element(:xpath, '//img[contains(@src, "kboard_captcha")]')
|
7501
8048
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7502
8049
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7503
|
-
puts '-[√] 챕챠 코드 code 5-
|
8050
|
+
puts '-[√] 챕챠 코드 code 5-1.......'.red
|
7504
8051
|
sleep(1)
|
7505
8052
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7506
8053
|
sleep(1)
|
@@ -7517,12 +8064,11 @@ rescue
|
|
7517
8064
|
rescue
|
7518
8065
|
begin
|
7519
8066
|
@driver.switch_to.default_content()
|
7520
|
-
|
7521
|
-
|
7522
|
-
el = @driver.find_element(:xpath, '//*[@id="captcha_Write"]')
|
8067
|
+
#@driver.find_element(:xpath, '//*[@for="kboard-input-captcha"]')
|
8068
|
+
el = @driver.find_element(:xpath, '//*[@for="kboard-input-captcha"] img')
|
7523
8069
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7524
8070
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7525
|
-
puts '-[√] 챕챠 코드 code
|
8071
|
+
puts '-[√] 챕챠 코드 code 5-2.......'.red
|
7526
8072
|
sleep(1)
|
7527
8073
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7528
8074
|
sleep(1)
|
@@ -7539,11 +8085,12 @@ rescue
|
|
7539
8085
|
rescue
|
7540
8086
|
begin
|
7541
8087
|
@driver.switch_to.default_content()
|
7542
|
-
|
7543
|
-
|
8088
|
+
sleep(1)
|
8089
|
+
#@driver.find_element(:xpath, '//*[@id="captcha_Write"]')
|
8090
|
+
el = @driver.find_element(:xpath, '//*[@id="captcha_Write"]')
|
7544
8091
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7545
8092
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7546
|
-
puts '-[√] 챕챠 코드 code
|
8093
|
+
puts '-[√] 챕챠 코드 code 6.......'.red
|
7547
8094
|
sleep(1)
|
7548
8095
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7549
8096
|
sleep(1)
|
@@ -7560,11 +8107,11 @@ rescue
|
|
7560
8107
|
rescue
|
7561
8108
|
begin
|
7562
8109
|
@driver.switch_to.default_content()
|
7563
|
-
#@driver.find_element(:xpath, '//*[@
|
7564
|
-
el = @driver.find_element(:xpath, '//*[@
|
8110
|
+
#@driver.find_element(:xpath, '//*[@image-reader="in-progress"]')
|
8111
|
+
el = @driver.find_element(:xpath, '//*[@image-reader="in-progress"]')
|
7565
8112
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7566
8113
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7567
|
-
puts '-[√] 챕챠 코드 code
|
8114
|
+
puts '-[√] 챕챠 코드 code 7.......'.red
|
7568
8115
|
sleep(1)
|
7569
8116
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7570
8117
|
sleep(1)
|
@@ -7581,11 +8128,11 @@ rescue
|
|
7581
8128
|
rescue
|
7582
8129
|
begin
|
7583
8130
|
@driver.switch_to.default_content()
|
7584
|
-
#@driver.find_element(:xpath, '//*[@id="
|
7585
|
-
el = @driver.find_element(:xpath, '//*[@id="
|
8131
|
+
#@driver.find_element(:xpath, '//*[@id="spamauth"]')
|
8132
|
+
el = @driver.find_element(:xpath, '//*[@id="spamauth"]')
|
7586
8133
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7587
8134
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7588
|
-
puts '-[√] 챕챠 코드 code
|
8135
|
+
puts '-[√] 챕챠 코드 code 8.......'.red
|
7589
8136
|
sleep(1)
|
7590
8137
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7591
8138
|
sleep(1)
|
@@ -7602,10 +8149,11 @@ rescue
|
|
7602
8149
|
rescue
|
7603
8150
|
begin
|
7604
8151
|
@driver.switch_to.default_content()
|
7605
|
-
|
8152
|
+
#@driver.find_element(:xpath, '//*[@id="norobot_img"]')
|
8153
|
+
el = @driver.find_element(:xpath, '//*[@id="norobot_img"]')
|
7606
8154
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7607
8155
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7608
|
-
puts '-[√] 챕챠 코드 code
|
8156
|
+
puts '-[√] 챕챠 코드 code 9.......'.red
|
7609
8157
|
sleep(1)
|
7610
8158
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7611
8159
|
sleep(1)
|
@@ -7622,10 +8170,10 @@ rescue
|
|
7622
8170
|
rescue
|
7623
8171
|
begin
|
7624
8172
|
@driver.switch_to.default_content()
|
7625
|
-
el = @driver.find_element(:xpath, '//*[@
|
8173
|
+
el = @driver.find_element(:xpath, '//*[@class="CodeImage"]')
|
7626
8174
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7627
8175
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7628
|
-
puts '-[√] 챕챠 코드 code
|
8176
|
+
puts '-[√] 챕챠 코드 code 10.......'.red
|
7629
8177
|
sleep(1)
|
7630
8178
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7631
8179
|
sleep(1)
|
@@ -7642,10 +8190,10 @@ rescue
|
|
7642
8190
|
rescue
|
7643
8191
|
begin
|
7644
8192
|
@driver.switch_to.default_content()
|
7645
|
-
el = @driver.find_element(:xpath, '//*[@
|
8193
|
+
el = @driver.find_element(:xpath, '//*[@id="kcaptcha_image"]')
|
7646
8194
|
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
7647
8195
|
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
7648
|
-
puts '-[√] 챕챠 코드 code
|
8196
|
+
puts '-[√] 챕챠 코드 code 11.......'.red
|
7649
8197
|
sleep(1)
|
7650
8198
|
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
7651
8199
|
sleep(1)
|
@@ -7660,8 +8208,50 @@ rescue
|
|
7660
8208
|
sleep(1)
|
7661
8209
|
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
7662
8210
|
rescue
|
7663
|
-
|
7664
|
-
|
8211
|
+
begin
|
8212
|
+
@driver.switch_to.default_content()
|
8213
|
+
el = @driver.find_element(:xpath, '//*[@class="lazy-loaded"]')
|
8214
|
+
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
8215
|
+
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
8216
|
+
puts '-[√] 챕챠 코드 code 12.......'.red
|
8217
|
+
sleep(1)
|
8218
|
+
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
8219
|
+
sleep(1)
|
8220
|
+
mouse_move_percentage(0.3,0.02)
|
8221
|
+
sleep(0.5)
|
8222
|
+
left_click
|
8223
|
+
sleep(1)
|
8224
|
+
@driver.switch_to.window(@driver.window_handle) #핸들 주입
|
8225
|
+
@driver.action.context_click(el).perform #우 클릭
|
8226
|
+
sleep(1)
|
8227
|
+
@driver.action.key_down(:shift).key_stroke('m').key_up(:shift).perform #단축키
|
8228
|
+
sleep(1)
|
8229
|
+
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
8230
|
+
rescue
|
8231
|
+
begin
|
8232
|
+
@driver.switch_to.default_content()
|
8233
|
+
el = @driver.find_element(:xpath, '//*[@id="zsfImg"]')
|
8234
|
+
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
8235
|
+
puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
8236
|
+
puts '-[√] 챕챠 코드 code 12.......'.red
|
8237
|
+
sleep(1)
|
8238
|
+
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
8239
|
+
sleep(1)
|
8240
|
+
mouse_move_percentage(0.3,0.02)
|
8241
|
+
sleep(0.5)
|
8242
|
+
left_click
|
8243
|
+
sleep(1)
|
8244
|
+
@driver.switch_to.window(@driver.window_handle) #핸들 주입
|
8245
|
+
@driver.action.context_click(el).perform #우 클릭
|
8246
|
+
sleep(1)
|
8247
|
+
@driver.action.key_down(:shift).key_stroke('m').key_up(:shift).perform #단축키
|
8248
|
+
sleep(1)
|
8249
|
+
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
8250
|
+
rescue
|
8251
|
+
|
8252
|
+
end
|
8253
|
+
end
|
8254
|
+
end
|
7665
8255
|
end
|
7666
8256
|
end
|
7667
8257
|
end
|
@@ -7673,57 +8263,17 @@ rescue
|
|
7673
8263
|
end
|
7674
8264
|
end
|
7675
8265
|
end
|
7676
|
-
end
|
7677
|
-
##캡챠 이미지,2캡챠,,등등 코드 부분─────────────────────────────────────────────────────────────────────>
|
7678
|
-
|
7679
|
-
sleep(1)
|
7680
|
-
|
7681
|
-
##캡챠 해제 입력 코드 부분─────────────────────────────────────────────────────────────────────>
|
7682
|
-
puts '-[√] 캡챠 입력 항목 탐색.......'.green
|
7683
|
-
begin
|
7684
|
-
@driver.find_element(:xpath, '//*[@name="captcha_key"]').click
|
7685
|
-
|
7686
|
-
sleep(1)
|
7687
8266
|
|
7688
|
-
el2 = @driver.find_element(:xpath, '//*[@name="captcha_key"]')
|
7689
|
-
@driver.action.context_click(el2).perform
|
7690
|
-
sleep(1)
|
7691
|
-
@driver.action.key_stroke('up')
|
7692
|
-
sleep(1)
|
7693
|
-
@driver.action.key_stroke('up')
|
7694
|
-
sleep(1)
|
7695
|
-
@driver.action.key_stroke('enter')
|
7696
8267
|
sleep(1)
|
7697
8268
|
|
8269
|
+
puts '-[√] 캡챠 입력 항목 탐색.......'.green
|
7698
8270
|
begin
|
7699
|
-
|
7700
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
7701
|
-
#요소가 나타날 때까지 7초 동안 기다립니다.
|
7702
|
-
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
7703
|
-
rescue
|
7704
|
-
sleep(1)
|
7705
|
-
@driver.action.key_stroke('left')
|
7706
|
-
sleep(1)
|
7707
|
-
@driver.action.key_stroke('up')
|
7708
|
-
sleep(1)
|
7709
|
-
@driver.action.key_stroke('enter')
|
7710
|
-
sleep(1)
|
7711
|
-
# 요소 찾기 타임아웃을 7초로 설정
|
7712
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
7713
|
-
#요소가 나타날 때까지 7초 동안 기다립니다.
|
7714
|
-
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
7715
|
-
end
|
7716
|
-
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
7717
|
-
sleep(1)
|
7718
|
-
rescue
|
7719
|
-
begin
|
7720
|
-
@driver.find_element(:xpath, '//*[@id="captcha_key"]').click
|
8271
|
+
@driver.find_element(:xpath, '//*[@name="captcha_key"]').click
|
7721
8272
|
|
7722
8273
|
sleep(1)
|
7723
|
-
|
7724
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8274
|
+
|
8275
|
+
el2 = @driver.find_element(:xpath, '//*[@name="captcha_key"]')
|
7725
8276
|
@driver.action.context_click(el2).perform
|
7726
|
-
|
7727
8277
|
sleep(1)
|
7728
8278
|
@driver.action.key_stroke('up')
|
7729
8279
|
sleep(1)
|
@@ -7731,33 +8281,34 @@ rescue
|
|
7731
8281
|
sleep(1)
|
7732
8282
|
@driver.action.key_stroke('enter')
|
7733
8283
|
sleep(1)
|
8284
|
+
|
7734
8285
|
begin
|
7735
|
-
|
7736
|
-
|
7737
|
-
|
7738
|
-
|
7739
|
-
|
7740
|
-
|
7741
|
-
|
7742
|
-
|
7743
|
-
|
7744
|
-
|
7745
|
-
|
7746
|
-
|
7747
|
-
|
7748
|
-
|
7749
|
-
|
7750
|
-
|
7751
|
-
|
8286
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8287
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8288
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8289
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8290
|
+
rescue
|
8291
|
+
sleep(1)
|
8292
|
+
@driver.action.key_stroke('left')
|
8293
|
+
sleep(1)
|
8294
|
+
@driver.action.key_stroke('up')
|
8295
|
+
sleep(1)
|
8296
|
+
@driver.action.key_stroke('enter')
|
8297
|
+
sleep(1)
|
8298
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8299
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8300
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8301
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8302
|
+
end
|
7752
8303
|
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
7753
8304
|
sleep(1)
|
7754
8305
|
rescue
|
7755
8306
|
begin
|
7756
|
-
@driver.find_element(:xpath, '
|
7757
|
-
|
7758
|
-
sleep(1)
|
8307
|
+
@driver.find_element(:xpath, '//*[@id="captcha_key"]').click
|
7759
8308
|
|
7760
|
-
|
8309
|
+
sleep(1)
|
8310
|
+
|
8311
|
+
el2 = @driver.find_element(:xpath, '//*[@id="captcha_key"]')
|
7761
8312
|
@driver.action.context_click(el2).perform
|
7762
8313
|
|
7763
8314
|
sleep(1)
|
@@ -7789,11 +8340,11 @@ rescue
|
|
7789
8340
|
sleep(1)
|
7790
8341
|
rescue
|
7791
8342
|
begin
|
7792
|
-
@driver.find_element(:xpath, '
|
7793
|
-
|
8343
|
+
@driver.find_element(:xpath, '=//*[@id="code"]').click
|
8344
|
+
|
7794
8345
|
sleep(1)
|
7795
8346
|
|
7796
|
-
el2 = @driver.find_element(:xpath, '//*[@id="
|
8347
|
+
el2 = @driver.find_element(:xpath, '//*[@id="code"]')
|
7797
8348
|
@driver.action.context_click(el2).perform
|
7798
8349
|
|
7799
8350
|
sleep(1)
|
@@ -7825,11 +8376,11 @@ rescue
|
|
7825
8376
|
sleep(1)
|
7826
8377
|
rescue
|
7827
8378
|
begin
|
7828
|
-
@driver.find_element(:xpath, '//*[@
|
8379
|
+
@driver.find_element(:xpath, '//*[@id="kboard-input-captcha"]').click
|
7829
8380
|
|
7830
8381
|
sleep(1)
|
7831
8382
|
|
7832
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8383
|
+
el2 = @driver.find_element(:xpath, '//*[@id="kboard-input-captcha"]')
|
7833
8384
|
@driver.action.context_click(el2).perform
|
7834
8385
|
|
7835
8386
|
sleep(1)
|
@@ -7861,23 +8412,24 @@ rescue
|
|
7861
8412
|
sleep(1)
|
7862
8413
|
rescue
|
7863
8414
|
begin
|
7864
|
-
@driver.find_element(:xpath, '//*[@
|
8415
|
+
@driver.find_element(:xpath, '//*[@fw-label="보안문자"]').click
|
8416
|
+
|
7865
8417
|
sleep(1)
|
7866
|
-
|
7867
|
-
|
7868
|
-
el2 = @driver.find_element(:xpath, '//*[@name="captcha"]')
|
7869
|
-
|
7870
|
-
# 우클릭 (context_click) 실행
|
8418
|
+
|
8419
|
+
el2 = @driver.find_element(:xpath, '//*[@fw-label="보안문자"]')
|
7871
8420
|
@driver.action.context_click(el2).perform
|
8421
|
+
|
7872
8422
|
sleep(1)
|
7873
8423
|
@driver.action.key_stroke('up')
|
7874
8424
|
sleep(1)
|
7875
8425
|
@driver.action.key_stroke('up')
|
7876
8426
|
sleep(1)
|
7877
8427
|
@driver.action.key_stroke('enter')
|
8428
|
+
sleep(1)
|
7878
8429
|
begin
|
8430
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
7879
8431
|
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
7880
|
-
|
8432
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
7881
8433
|
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
7882
8434
|
rescue
|
7883
8435
|
sleep(1)
|
@@ -7896,24 +8448,23 @@ rescue
|
|
7896
8448
|
sleep(1)
|
7897
8449
|
rescue
|
7898
8450
|
begin
|
7899
|
-
@driver.find_element(:xpath, '//*[@
|
7900
|
-
|
8451
|
+
@driver.find_element(:xpath, '//*[@name="captcha"]').click
|
7901
8452
|
sleep(1)
|
7902
|
-
|
7903
|
-
|
8453
|
+
|
8454
|
+
# CAPTCHA 요소 찾기
|
8455
|
+
el2 = @driver.find_element(:xpath, '//*[@name="captcha"]')
|
8456
|
+
|
8457
|
+
# 우클릭 (context_click) 실행
|
7904
8458
|
@driver.action.context_click(el2).perform
|
7905
|
-
|
7906
8459
|
sleep(1)
|
7907
8460
|
@driver.action.key_stroke('up')
|
7908
8461
|
sleep(1)
|
7909
8462
|
@driver.action.key_stroke('up')
|
7910
8463
|
sleep(1)
|
7911
8464
|
@driver.action.key_stroke('enter')
|
7912
|
-
sleep(1)
|
7913
8465
|
begin
|
7914
|
-
# 요소 찾기 타임아웃을 7초로 설정
|
7915
8466
|
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
7916
|
-
|
8467
|
+
# 요소가 나타날 때까지 7초 동안 기다립니다.
|
7917
8468
|
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
7918
8469
|
rescue
|
7919
8470
|
sleep(1)
|
@@ -7932,13 +8483,14 @@ rescue
|
|
7932
8483
|
sleep(1)
|
7933
8484
|
rescue
|
7934
8485
|
begin
|
7935
|
-
@driver.find_element(:xpath, '//*[@id="
|
7936
|
-
|
8486
|
+
@driver.find_element(:xpath, '//*[@id="spamCode"]').click
|
8487
|
+
|
7937
8488
|
sleep(1)
|
7938
|
-
|
7939
|
-
el2 = @driver.find_element(:xpath, '//*[@id="
|
8489
|
+
|
8490
|
+
el2 = @driver.find_element(:xpath, '//*[@id="spamCode"]')
|
7940
8491
|
@driver.action.context_click(el2).perform
|
7941
|
-
|
8492
|
+
|
8493
|
+
sleep(1)
|
7942
8494
|
@driver.action.key_stroke('up')
|
7943
8495
|
sleep(1)
|
7944
8496
|
@driver.action.key_stroke('up')
|
@@ -7967,51 +8519,48 @@ rescue
|
|
7967
8519
|
sleep(1)
|
7968
8520
|
rescue
|
7969
8521
|
begin
|
7970
|
-
@driver.
|
7971
|
-
sleep(1)
|
7972
|
-
@driver.find_element(:xpath, '//*[@name="kcaptcha_code"]').click
|
7973
|
-
|
7974
|
-
sleep(1)
|
8522
|
+
@driver.find_element(:xpath, '//*[@id="norobot_code"]').click
|
7975
8523
|
|
7976
|
-
|
7977
|
-
|
7978
|
-
|
8524
|
+
sleep(1)
|
8525
|
+
|
8526
|
+
el2 = @driver.find_element(:xpath, '//*[@id="norobot_code"]')
|
8527
|
+
@driver.action.context_click(el2).perform
|
8528
|
+
|
8529
|
+
@driver.action.key_stroke('up')
|
8530
|
+
sleep(1)
|
8531
|
+
@driver.action.key_stroke('up')
|
8532
|
+
sleep(1)
|
8533
|
+
@driver.action.key_stroke('enter')
|
8534
|
+
sleep(1)
|
8535
|
+
begin
|
8536
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8537
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8538
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8539
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8540
|
+
rescue
|
7979
8541
|
sleep(1)
|
7980
|
-
@driver.action.key_stroke('
|
8542
|
+
@driver.action.key_stroke('left')
|
7981
8543
|
sleep(1)
|
7982
8544
|
@driver.action.key_stroke('up')
|
7983
8545
|
sleep(1)
|
7984
8546
|
@driver.action.key_stroke('enter')
|
7985
|
-
sleep(1)
|
7986
|
-
|
7987
|
-
|
7988
|
-
|
7989
|
-
|
7990
|
-
|
7991
|
-
|
7992
|
-
|
7993
|
-
@driver.action.key_stroke('left')
|
7994
|
-
sleep(1)
|
7995
|
-
@driver.action.key_stroke('up')
|
7996
|
-
sleep(1)
|
7997
|
-
@driver.action.key_stroke('enter')
|
7998
|
-
sleep(1)
|
7999
|
-
# 요소 찾기 타임아웃을 7초로 설정
|
8000
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8001
|
-
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8002
|
-
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8003
|
-
end
|
8004
|
-
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
8005
|
-
sleep(1)
|
8547
|
+
sleep(1)
|
8548
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8549
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8550
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8551
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8552
|
+
end
|
8553
|
+
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
8554
|
+
sleep(1)
|
8006
8555
|
rescue
|
8007
8556
|
begin
|
8008
8557
|
@driver.switch_to.default_content()
|
8009
8558
|
sleep(1)
|
8010
|
-
@driver.find_element(:xpath, '//*[@
|
8559
|
+
@driver.find_element(:xpath, '//*[@name="kcaptcha_code"]').click
|
8011
8560
|
|
8012
8561
|
sleep(1)
|
8013
8562
|
|
8014
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8563
|
+
el2 = @driver.find_element(:xpath, '//*[@name="kcaptcha_code"]')
|
8015
8564
|
@driver.action.context_click(el2).perform
|
8016
8565
|
|
8017
8566
|
sleep(1)
|
@@ -8045,11 +8594,11 @@ rescue
|
|
8045
8594
|
begin
|
8046
8595
|
@driver.switch_to.default_content()
|
8047
8596
|
sleep(1)
|
8048
|
-
@driver.find_element(:xpath, '//*[@
|
8597
|
+
@driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]').click
|
8049
8598
|
|
8050
8599
|
sleep(1)
|
8051
8600
|
|
8052
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8601
|
+
el2 = @driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]')
|
8053
8602
|
@driver.action.context_click(el2).perform
|
8054
8603
|
|
8055
8604
|
sleep(1)
|
@@ -8083,11 +8632,11 @@ rescue
|
|
8083
8632
|
begin
|
8084
8633
|
@driver.switch_to.default_content()
|
8085
8634
|
sleep(1)
|
8086
|
-
@driver.find_element(:xpath, '//*[@
|
8635
|
+
@driver.find_element(:xpath, '//*[@id="user_captcha"]').click
|
8087
8636
|
|
8088
8637
|
sleep(1)
|
8089
8638
|
|
8090
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8639
|
+
el2 = @driver.find_element(:xpath, '//*[@id="user_captcha"]')
|
8091
8640
|
@driver.action.context_click(el2).perform
|
8092
8641
|
|
8093
8642
|
sleep(1)
|
@@ -8121,11 +8670,11 @@ rescue
|
|
8121
8670
|
begin
|
8122
8671
|
@driver.switch_to.default_content()
|
8123
8672
|
sleep(1)
|
8124
|
-
@driver.find_element(:xpath, '//*[@
|
8673
|
+
@driver.find_element(:xpath, '//*[@itemname="자동등록방지"]').click
|
8125
8674
|
|
8126
8675
|
sleep(1)
|
8127
8676
|
|
8128
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8677
|
+
el2 = @driver.find_element(:xpath, '//*[@itemname="자동등록방지"]')
|
8129
8678
|
@driver.action.context_click(el2).perform
|
8130
8679
|
|
8131
8680
|
sleep(1)
|
@@ -8159,11 +8708,11 @@ rescue
|
|
8159
8708
|
begin
|
8160
8709
|
@driver.switch_to.default_content()
|
8161
8710
|
sleep(1)
|
8162
|
-
@driver.find_element(:xpath, '//*[@
|
8711
|
+
@driver.find_element(:xpath, '//*[@name="wr_key"]').click
|
8163
8712
|
|
8164
8713
|
sleep(1)
|
8165
8714
|
|
8166
|
-
el2 = @driver.find_element(:xpath, '//*[@
|
8715
|
+
el2 = @driver.find_element(:xpath, '//*[@name="wr_key"]')
|
8167
8716
|
@driver.action.context_click(el2).perform
|
8168
8717
|
|
8169
8718
|
sleep(1)
|
@@ -8197,11 +8746,11 @@ rescue
|
|
8197
8746
|
begin
|
8198
8747
|
@driver.switch_to.default_content()
|
8199
8748
|
sleep(1)
|
8200
|
-
@driver.find_element(:xpath, '
|
8749
|
+
@driver.find_element(:xpath, '//*[@title="자동등록방지"]').click
|
8201
8750
|
|
8202
8751
|
sleep(1)
|
8203
8752
|
|
8204
|
-
el2 = @driver.find_element(:xpath, '
|
8753
|
+
el2 = @driver.find_element(:xpath, '//*[@title="자동등록방지"]')
|
8205
8754
|
@driver.action.context_click(el2).perform
|
8206
8755
|
|
8207
8756
|
sleep(1)
|
@@ -8232,7 +8781,85 @@ rescue
|
|
8232
8781
|
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
8233
8782
|
sleep(1)
|
8234
8783
|
rescue
|
8784
|
+
begin
|
8785
|
+
@driver.switch_to.default_content()
|
8786
|
+
sleep(1)
|
8787
|
+
@driver.find_element(:xpath, '//input[@name="kcaptcha_img"]').click
|
8788
|
+
|
8789
|
+
sleep(1)
|
8790
|
+
|
8791
|
+
el2 = @driver.find_element(:xpath, '//input[@name="kcaptcha_img"]')
|
8792
|
+
@driver.action.context_click(el2).perform
|
8793
|
+
|
8794
|
+
sleep(1)
|
8795
|
+
@driver.action.key_stroke('up')
|
8796
|
+
sleep(1)
|
8797
|
+
@driver.action.key_stroke('up')
|
8798
|
+
sleep(1)
|
8799
|
+
@driver.action.key_stroke('enter')
|
8800
|
+
sleep(1)
|
8801
|
+
begin
|
8802
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8803
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8804
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8805
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8806
|
+
rescue
|
8807
|
+
sleep(1)
|
8808
|
+
@driver.action.key_stroke('left')
|
8809
|
+
sleep(1)
|
8810
|
+
@driver.action.key_stroke('up')
|
8811
|
+
sleep(1)
|
8812
|
+
@driver.action.key_stroke('enter')
|
8813
|
+
sleep(1)
|
8814
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8815
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8816
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8817
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8818
|
+
end
|
8819
|
+
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
8820
|
+
sleep(1)
|
8821
|
+
rescue
|
8822
|
+
begin
|
8823
|
+
@driver.switch_to.default_content()
|
8824
|
+
sleep(1)
|
8825
|
+
@driver.find_element(:xpath, '//*[@id="zsfCode"]').click
|
8235
8826
|
|
8827
|
+
sleep(1)
|
8828
|
+
|
8829
|
+
el2 = @driver.find_element(:xpath, '//*[@id="zsfCode"]')
|
8830
|
+
@driver.action.context_click(el2).perform
|
8831
|
+
|
8832
|
+
sleep(1)
|
8833
|
+
@driver.action.key_stroke('up')
|
8834
|
+
sleep(1)
|
8835
|
+
@driver.action.key_stroke('up')
|
8836
|
+
sleep(1)
|
8837
|
+
@driver.action.key_stroke('enter')
|
8838
|
+
sleep(1)
|
8839
|
+
begin
|
8840
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8841
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8842
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8843
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8844
|
+
rescue
|
8845
|
+
sleep(1)
|
8846
|
+
@driver.action.key_stroke('left')
|
8847
|
+
sleep(1)
|
8848
|
+
@driver.action.key_stroke('up')
|
8849
|
+
sleep(1)
|
8850
|
+
@driver.action.key_stroke('enter')
|
8851
|
+
sleep(1)
|
8852
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
8853
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
8854
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
8855
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
8856
|
+
end
|
8857
|
+
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
8858
|
+
sleep(1)
|
8859
|
+
rescue
|
8860
|
+
|
8861
|
+
end
|
8862
|
+
end
|
8236
8863
|
end
|
8237
8864
|
end
|
8238
8865
|
end
|
@@ -8246,9 +8873,8 @@ rescue
|
|
8246
8873
|
end
|
8247
8874
|
end
|
8248
8875
|
end
|
8249
|
-
end
|
8250
|
-
|
8251
|
-
##<─────────────────────────────────────────────────────────────────────캡챠 해제 입력 코드 부분
|
8876
|
+
end
|
8877
|
+
|
8252
8878
|
|
8253
8879
|
|
8254
8880
|
|
@@ -8315,7 +8941,7 @@ sleep(10)
|
|
8315
8941
|
sleep(1)
|
8316
8942
|
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
8317
8943
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
8318
|
-
sleep(
|
8944
|
+
sleep(5)
|
8319
8945
|
begin
|
8320
8946
|
@driver.find_element(:xpath, '//*[@name="user_captcha"]').click
|
8321
8947
|
sleep(1)
|
@@ -8342,7 +8968,8 @@ end
|
|
8342
8968
|
|
8343
8969
|
|
8344
8970
|
|
8345
|
-
|
8971
|
+
else
|
8972
|
+
end
|
8346
8973
|
|
8347
8974
|
|
8348
8975
|
|
@@ -8370,7 +8997,7 @@ sleep(1)
|
|
8370
8997
|
|
8371
8998
|
|
8372
8999
|
##등록 버튼 코드 부분─────────────────────────────────────────────────────────────────────>
|
8373
|
-
|
9000
|
+
|
8374
9001
|
begin
|
8375
9002
|
@driver.find_element(:xpath, '//*[@aria-label="코드 보기"]')
|
8376
9003
|
sleep(1)
|
@@ -8395,7 +9022,7 @@ rescue
|
|
8395
9022
|
@driver.find_element(:xpath, '//*[@title="에디터 타입"]').click
|
8396
9023
|
sleep(1)
|
8397
9024
|
rescue
|
8398
|
-
|
9025
|
+
|
8399
9026
|
end
|
8400
9027
|
end
|
8401
9028
|
end
|
@@ -8672,7 +9299,16 @@ rescue
|
|
8672
9299
|
sleep(5)
|
8673
9300
|
|
8674
9301
|
rescue
|
8675
|
-
|
9302
|
+
begin
|
9303
|
+
ss_button = @driver.find_element(:xpath, '//*[@class="btn btn_point"]')
|
9304
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
9305
|
+
sleep(1)
|
9306
|
+
|
9307
|
+
@driver.find_element(:xpath, '//*[@class="btn btn_point"]').click
|
9308
|
+
puts '-[√] 등록을 28번 코드로 시도하였습니다.......'.magenta
|
9309
|
+
sleep(5)
|
9310
|
+
|
9311
|
+
rescue
|
8676
9312
|
|
8677
9313
|
########─────────────────────────────▼▼▼▼▼▼▼ 등록버튼 2차 시도 ▼▼▼▼▼▼▼──────────────────────────────#######
|
8678
9314
|
begin
|
@@ -8870,7 +9506,7 @@ rescue
|
|
8870
9506
|
########─────────────────────────────▲▲▲▲▲▲▲ 등록버튼 2차 시도 ▲▲▲▲▲▲▲──────────────────────────────#######
|
8871
9507
|
|
8872
9508
|
|
8873
|
-
|
9509
|
+
end
|
8874
9510
|
end
|
8875
9511
|
end
|
8876
9512
|
end
|
@@ -8999,6 +9635,7 @@ end
|
|
8999
9635
|
|
9000
9636
|
|
9001
9637
|
|
9638
|
+
|
9002
9639
|
class Wordpress
|
9003
9640
|
include Glimmer
|
9004
9641
|
|
@@ -9504,64 +10141,36 @@ class Wordpress
|
|
9504
10141
|
puts table[10]
|
9505
10142
|
if table[8].to_i > table[10].to_i
|
9506
10143
|
if @data['포스트설정']['테더링'].checked?
|
9507
|
-
puts '
|
9508
|
-
|
10144
|
+
puts 'tedering ip change...'
|
9509
10145
|
stdout, stderr, status = Open3.capture3('./adb devices')
|
9510
|
-
|
9511
10146
|
if status.success?
|
9512
|
-
|
9513
|
-
|
9514
|
-
|
9515
|
-
|
9516
|
-
|
9517
|
-
|
9518
|
-
|
9519
|
-
|
9520
|
-
|
9521
|
-
|
9522
|
-
|
9523
|
-
|
9524
|
-
|
9525
|
-
|
9526
|
-
|
9527
|
-
|
9528
|
-
|
9529
|
-
|
9530
|
-
|
9531
|
-
|
9532
|
-
|
9533
|
-
sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
|
9534
|
-
puts 'adb ok'
|
9535
|
-
sleep(8)
|
9536
|
-
|
9537
|
-
# IP 변경 확인을 위한 람다 함수
|
9538
|
-
robot_ip = lambda do
|
9539
|
-
begin
|
9540
|
-
# IP 변경 확인
|
9541
|
-
http = HTTP.get('https://www.findip.kr/')
|
9542
|
-
noko = Nokogiri::HTML(http.to_s)
|
9543
|
-
|
9544
|
-
current_ip = noko.xpath('/html/body/header/h2').text.strip
|
9545
|
-
if current_ip != @my_ip
|
9546
|
-
@my_ip = current_ip
|
9547
|
-
puts "IP 변경됨[ #{@my_ip} ]"
|
9548
|
-
else
|
9549
|
-
puts "현재 IP: #{@my_ip}"
|
9550
|
-
puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
|
9551
|
-
sleep(5) # 여유롭게 대기 시간 증가
|
9552
|
-
robot_ip[] # 재시도
|
9553
|
-
end
|
9554
|
-
rescue HTTP::ConnectionError => e
|
9555
|
-
puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
|
9556
|
-
sleep(5) # 재시도 간 여유 시간 추가
|
9557
|
-
retry # 재시도
|
10147
|
+
device_id = stdout.split("\n")[1].split("\t")[0]
|
10148
|
+
puts device_id
|
10149
|
+
puts 'adb -s '+device_id+' shell svc data disable'
|
10150
|
+
stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
|
10151
|
+
sleep(3)
|
10152
|
+
puts 'adb -s '+device_id+' shell svc data enable'
|
10153
|
+
Open3.capture3('./adb -s '+device_id+' shell svc data enable')
|
10154
|
+
sleep(3)
|
10155
|
+
puts 'adb ok'
|
10156
|
+
sleep(8)
|
10157
|
+
robot_ip = lambda do
|
10158
|
+
http = HTTP.get('https://www.findip.kr/')
|
10159
|
+
noko = Nokogiri::HTML(http.to_s)
|
10160
|
+
if noko.xpath('/html/body/header/h2').text != @my_ip
|
10161
|
+
@my_ip = noko.xpath('/html/body/header/h2').text
|
10162
|
+
else
|
10163
|
+
puts @my_ip
|
10164
|
+
puts '재시도...'
|
10165
|
+
sleep(3)
|
10166
|
+
robot_ip[]
|
10167
|
+
end
|
9558
10168
|
end
|
9559
|
-
|
9560
|
-
robot_ip[] # IP 확인 시작
|
10169
|
+
robot_ip[]
|
9561
10170
|
else
|
9562
|
-
|
10171
|
+
puts 'adb error pass'
|
9563
10172
|
end
|
9564
|
-
|
10173
|
+
end
|
9565
10174
|
|
9566
10175
|
check_success = 1
|
9567
10176
|
@data['table'][index][-1] = 0
|
@@ -9639,7 +10248,7 @@ class Wordpress
|
|
9639
10248
|
@data['table'].pop
|
9640
10249
|
|
9641
10250
|
#네이버로그인
|
9642
|
-
login_check = naver.login(option['proxy'])
|
10251
|
+
login_check = naver.login(option['proxy'],captcha_key)
|
9643
10252
|
if login_check == 0
|
9644
10253
|
black_users << table[1].to_s
|
9645
10254
|
next
|