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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/posting_duo.rb +1392 -783
  3. 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
- # require 'webdrivers'
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
- def chrome_start(proxy)
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.add_extension('./crx/free.crx')
38
- options.add_extension('./crx/app.crx')
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 = { page_load: 20_000 }
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('--start-maximized')
43
- options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.59 Safari/537.36') # user-agent 위조
44
- options.add_argument('--disable-blink-features=AutomationControlled') # 자동화된 환경에서 실행되는 것을 감지하는 기능 비활성화
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
- options.add_argument('--remote-debugging-port=9222') # 디버깅 포트 설정
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 = { page_load: 20_000 }
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('--start-maximized')
86
- options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.59 Safari/537.36') # user-agent 위조
87
- options.add_argument('--disable-blink-features=AutomationControlled') # 자동화된 환경에서 실행되는 것을 감지하는 기능 비활성화
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
- options.add_argument('--remote-debugging-port=9222') # 디버깅 포트 설정
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.add_extension('./crx/free.crx')
119
- options.add_extension('./crx/app.crx')
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 = { page_load: 20_000 }
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('--start-maximized')
124
- options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.59 Safari/537.36') # user-agent 위조
125
- options.add_argument('--disable-blink-features=AutomationControlled') # 자동화된 환경에서 실행되는 것을 감지하는 기능 비활성화
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
- options.add_argument('--remote-debugging-port=9222') # 디버깅 포트 설정
136
- options.add_argument("--disable-logging")
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
- @driver.get('about:blank')
160
- sleep(2)
161
-
162
- # 열린 모든 탭 핸들 확인
163
- all_windows = @driver.window_handles
164
- puts "현재 열려 있는 탭 수: #{all_windows.size}" # 열린 탭 수 출력
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
- # 'chrome-extension://'로 시작하는 확장 프로그램 탭을 제외하고 닫기
173
- if current_url.start_with?('chrome-extension://')
174
- puts "확장 프로그램 탭을 닫지 않음: #{current_url}"
175
- else
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
- all_windows = @driver.window_handles # 남은 리스트 갱신
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
- @driver.get('chrome-extension://ifibfemgeogfhoebkmokieepdoobkbpo/options/options.html')
194
- sleep(1)
195
- end
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
- rescue => e
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
- begin
384
- wait = Selenium::WebDriver::Wait.new(:timeout => 30) # 최대 20초 대기
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
- rescue
422
- end
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(1)
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(3)
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(3)
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.find_elements(:tag_name, 'img').each do |img|
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(:css, 'label[for="kboard-input-captcha"] img')
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
- wait = Selenium::WebDriver::Wait.new(:timeout => 30) # 최대 20초 대기
2471
- wait.until { @driver.execute_script("return document.readyState") == "complete" }
2472
- @driver.get(login_url)
2473
- sleep(1)
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
- rescue Selenium::WebDriver::Error::TimeoutError => e
2501
- puts "웹 페이지 로드가 시간 초과되었습니다: #{e.message}"
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
- sleep(1)
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
- puts '-[√] 1 캡챠 발생 유무 확인.......'.green
2514
- sleep(1)
2515
- puts '-[√] 2 캡챠 발생 유무 확인.......'.green
2516
- sleep(1)
2517
- puts '-[√] 3 캡챠 발생 유무 확인.......'.green
2518
- sleep(1)
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(1)
2557
- rescue => e
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(3)
2604
- rescue => e
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 => 5)
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(3)
2648
- rescue => e
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
- puts '-[√] 숨김 code 탐색 중 (발견시 제거).......'.green
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
- puts '-[√] 숨김 code 탐색 중 (발견시 제거).......'.green
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
- puts '-[√] 숨김 code 탐색 중 (발견시 제거).......'.green
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
- puts '-[√] 숨김 code 탐색 중 (발견시 제거).......'.green
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
- puts '-[√] 숨김 code 탐색 중 (발견시 제거).......'.green
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
- puts '-[√] 팝업 여부 확인 체크 01.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 02.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 03.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 04.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 05.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 로그인 ID/PW 입력 필드 탐색.......'.cyan
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 => e
3426
- puts '-[√] 로그인 페이지 접속 시도 실패 (페이지 로딩 지연 및 접속 불량).......'.red
3427
- puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3428
- @driver.window_handles.each do |handle|
3429
- @driver.switch_to.window(handle)
3430
- begin
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
- @driver.action.key_down(:tab).key_up(:tab).perform #x탭
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
- puts '-[√] 로그인 ID/PW 입력 필드 종료.......'.cyan
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, '//*[@alt="로그인"]').click
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, '//*[@id="mb_login"]/form/div[5]/button').click
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="ol_submit"]').click
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, '//*[@alt="login"]').click
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, '//*[@title="login"]').click
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, '//*[@id="signIn_1"]').click
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="btn_login"]').click
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, '//*[@name="wp-submit"]').click
3920
+ @driver.find_element(:xpath, '//*[@id="btn_login"]').click
3634
3921
  puts '-[√] 로그인 버튼 코드 14 타겟.......'.cyan
3635
3922
  sleep(3)
3636
3923
  rescue
3637
- @driver.action.key_down(:enter).key_up(:enter).perform #엔터
3638
- sleep(3)
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
- wait = Selenium::WebDriver::Wait.new(:timeout => 30) # 최대 20초 대기
3690
- wait.until { @driver.execute_script("return document.readyState") == "complete" }
3691
- @driver.get(cc_check_url)
3692
- sleep(1)
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
- rescue Selenium::WebDriver::Error::TimeoutError => e
3720
- puts "웹 페이지 로드가 시간 초과되었습니다: #{e.message}"
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
- puts '-[√] 1 캡챠 발생 유무 확인.......'.green
3734
- sleep(1)
3735
- puts '-[√] 2 캡챠 발생 유무 확인.......'.green
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
- begin
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
- login_url = option['login_url'].to_s
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
- wait = Selenium::WebDriver::Wait.new(:timeout => 30) # 최대 20초 대기
3937
- wait.until { @driver.execute_script("return document.readyState") == "complete" }
3938
- @driver.get(post_url)
3939
- sleep(1)
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
- puts '-[√] 글쓰기 버튼 클릭이 필수인지 탐색합니다.......'.green
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.......'.green
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.......'.green
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.......'.green
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.......'.green
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(1)
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(3)
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(3)
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
- puts '-[√] 캡챠 발생 없음.......'.green
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
- puts '-[√] 팝업 여부 확인 체크 01.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 02.......'.yellow
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
- puts '.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 04.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 팝업 여부 확인 체크 05.......'.yellow
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
- puts '.......'.yellow
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
- puts '-[√] 포스팅할 내용 준비.......'.cyan
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
- puts '-[√] 내용 등록 마무리 진행 중.......'.cyan
6888
+
6406
6889
 
6407
6890
 
6408
6891
 
@@ -7376,42 +7859,106 @@ end
7376
7859
 
7377
7860
 
7378
7861
 
7379
- #@driver.action.key_down(:tab).key_up(:tab).perform #x탭
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(1)
7383
- ##캡챠 이미지,2캡챠,,등등 코드 부분─────────────────────────────────────────────────────────────────────>
7384
- puts '-[√] 캡챠 유형 탐색.......'.green
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
- begin
7388
- @driver.switch_to.default_content()
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, '//*[@alt="자동등록방지"]')
7411
- el = @driver.find_element(:xpath, '//*[@alt="자동등록방지"]')
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 2.......'.red
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, '//*[@id="captcha_img"]').send_keys(:tab)
7432
- el = @driver.find_element(:xpath, '//*[@id="captcha_img"]')
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 3.......'.red
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="kcaptcha"]')
7459
- el = @driver.find_element(:xpath, '//*[@id="kcaptcha"]')
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 4.......'.red
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
- el = @driver.find_element(:xpath, '//img[contains(@src, "kboard_captcha")]')
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 5-1.......'.red
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
- #@driver.find_element(:xpath, '//*[@for="kboard-input-captcha"]')
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-2.......'.red
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
- sleep(1)
7521
- #@driver.find_element(:xpath, '//*[@id="captcha_Write"]')
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 6.......'.red
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
- #@driver.find_element(:xpath, '//*[@image-reader="in-progress"]')
7543
- el = @driver.find_element(:xpath, '//*[@image-reader="in-progress"]')
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 7.......'.red
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, '//*[@id="spamauth"]')
7564
- el = @driver.find_element(:xpath, '//*[@id="spamauth"]')
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 8.......'.red
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="norobot_img"]')
7585
- el = @driver.find_element(:xpath, '//*[@id="norobot_img"]')
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 9.......'.red
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
- el = @driver.find_element(:xpath, '//*[@class="CodeImage"]')
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 10.......'.red
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, '//*[@id="kcaptcha_image"]')
8173
+ el = @driver.find_element(:xpath, '//*[@class="CodeImage"]')
7626
8174
  puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
7627
8175
  puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
7628
- puts '-[√] 챕챠 코드 code 11.......'.red
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, '//*[@class="lazy-loaded"]')
8193
+ el = @driver.find_element(:xpath, '//*[@id="kcaptcha_image"]')
7646
8194
  puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
7647
8195
  puts '-[√] 챕챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
7648
- puts '-[√] 챕챠 코드 code 12.......'.red
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
- end
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
- # 요소 찾기 타임아웃을 7초로 설정
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, '//*[@id="captcha_key"]')
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
- # 요소 찾기 타임아웃을 7초로 설정
7736
- wait = Selenium::WebDriver::Wait.new(:timeout => 7)
7737
- #요소가 나타날 때까지 7초 동안 기다립니다.
7738
- wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
7739
- rescue
7740
- sleep(1)
7741
- @driver.action.key_stroke('left')
7742
- sleep(1)
7743
- @driver.action.key_stroke('up')
7744
- sleep(1)
7745
- @driver.action.key_stroke('enter')
7746
- sleep(1)
7747
- # 요소 찾기 타임아웃을 7초로 설정
7748
- wait = Selenium::WebDriver::Wait.new(:timeout => 7)
7749
- #요소가 나타날 때까지 7초 동안 기다립니다.
7750
- wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
7751
- end
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, '=//*[@id="code"]').click
7757
-
7758
- sleep(1)
8307
+ @driver.find_element(:xpath, '//*[@id="captcha_key"]').click
7759
8308
 
7760
- el2 = @driver.find_element(:xpath, '//*[@id="code"]')
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, '//*[@id="kboard-input-captcha"]').click
7793
-
8343
+ @driver.find_element(:xpath, '=//*[@id="code"]').click
8344
+
7794
8345
  sleep(1)
7795
8346
 
7796
- el2 = @driver.find_element(:xpath, '//*[@id="kboard-input-captcha"]')
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, '//*[@fw-label="보안문자"]').click
8379
+ @driver.find_element(:xpath, '//*[@id="kboard-input-captcha"]').click
7829
8380
 
7830
8381
  sleep(1)
7831
8382
 
7832
- el2 = @driver.find_element(:xpath, '//*[@fw-label="보안문자"]')
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, '//*[@name="captcha"]').click
8415
+ @driver.find_element(:xpath, '//*[@fw-label="보안문자"]').click
8416
+
7865
8417
  sleep(1)
7866
-
7867
- # CAPTCHA 요소 찾기
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
- # 요소가 나타날 때까지 7초 동안 기다립니다.
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, '//*[@id="spamCode"]').click
7900
-
8451
+ @driver.find_element(:xpath, '//*[@name="captcha"]').click
7901
8452
  sleep(1)
7902
-
7903
- el2 = @driver.find_element(:xpath, '//*[@id="spamCode"]')
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
- #요소가 나타날 때까지 7초 동안 기다립니다.
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="norobot_code"]').click
7936
-
8486
+ @driver.find_element(:xpath, '//*[@id="spamCode"]').click
8487
+
7937
8488
  sleep(1)
7938
-
7939
- el2 = @driver.find_element(:xpath, '//*[@id="norobot_code"]')
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.switch_to.default_content()
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
- el2 = @driver.find_element(:xpath, '//*[@name="kcaptcha_code"]')
7977
- @driver.action.context_click(el2).perform
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('up')
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
- begin
7987
- # 요소 찾기 타임아웃을 7초로 설정
7988
- wait = Selenium::WebDriver::Wait.new(:timeout => 7)
7989
- #요소가 나타날 때까지 7초 동안 기다립니다.
7990
- wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
7991
- rescue
7992
- sleep(1)
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, '//*[@title="자동글쓰기방지"]').click
8559
+ @driver.find_element(:xpath, '//*[@name="kcaptcha_code"]').click
8011
8560
 
8012
8561
  sleep(1)
8013
8562
 
8014
- el2 = @driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]')
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, '//*[@id="user_captcha"]').click
8597
+ @driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]').click
8049
8598
 
8050
8599
  sleep(1)
8051
8600
 
8052
- el2 = @driver.find_element(:xpath, '//*[@id="user_captcha"]')
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, '//*[@itemname="자동등록방지"]').click
8635
+ @driver.find_element(:xpath, '//*[@id="user_captcha"]').click
8087
8636
 
8088
8637
  sleep(1)
8089
8638
 
8090
- el2 = @driver.find_element(:xpath, '//*[@itemname="자동등록방지"]')
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, '//*[@name="wr_key"]').click
8673
+ @driver.find_element(:xpath, '//*[@itemname="자동등록방지"]').click
8125
8674
 
8126
8675
  sleep(1)
8127
8676
 
8128
- el2 = @driver.find_element(:xpath, '//*[@name="wr_key"]')
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, '//*[@title="자동등록방지"]').click
8711
+ @driver.find_element(:xpath, '//*[@name="wr_key"]').click
8163
8712
 
8164
8713
  sleep(1)
8165
8714
 
8166
- el2 = @driver.find_element(:xpath, '//*[@title="자동등록방지"]')
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, '//input[@name="kcaptcha_img"]').click
8749
+ @driver.find_element(:xpath, '//*[@title="자동등록방지"]').click
8201
8750
 
8202
8751
  sleep(1)
8203
8752
 
8204
- el2 = @driver.find_element(:xpath, '//input[@name="kcaptcha_img"]')
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
- end
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(3)
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
- puts '-[√] HTML 버튼 복구 여부 체크.......'.yellow
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
- puts '-[√] HTML 버튼 복구 여부 체크 종료.......'.yellow
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 'Tethering IP change...'
9508
-
10144
+ puts 'tedering ip change...'
9509
10145
  stdout, stderr, status = Open3.capture3('./adb devices')
9510
-
9511
10146
  if status.success?
9512
- device_id = stdout.split("\n")[1].split("\t")[0]
9513
- puts device_id
9514
-
9515
- # ADB 서버 초기화
9516
- puts 'adb kill-server'
9517
- Open3.capture3('./adb kill-server')
9518
- sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
9519
-
9520
- # 다시 ADB 서버 실행
9521
- puts 'adb start-server'
9522
- Open3.capture3('./adb start-server')
9523
- sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
9524
-
9525
- # 데이터를 끄고 켜기
9526
- puts 'adb -s ' + device_id + ' shell svc data disable'
9527
- stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
9528
- puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
9529
- sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
9530
- puts 'adb -s ' + device_id + ' shell svc data enable'
9531
- stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
9532
- puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
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
- end
9560
- robot_ip[] # IP 확인 시작
10169
+ robot_ip[]
9561
10170
  else
9562
- puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
10171
+ puts 'adb error pass'
9563
10172
  end
9564
- end
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