zon_cafe_comment 0.0.15 → 0.0.23

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/zon_cafe_comment.rb +74 -29
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 365258f3b7a4dd74b632b1a9751acd06e75a081c960aa01d99bc45468d3b6384
4
- data.tar.gz: 68e0db65a65fdebd0abb307fae04ca56861c529cbc0f91cba8578e1763d30208
3
+ metadata.gz: 752c2b450ef5ff6005562228c8562dad784892342f09b6f88b27679d62ce027a
4
+ data.tar.gz: 84374d23a74c44221e7b6466cf83f19dcd0548d8ae15af61ae4ed2d43fb170e4
5
5
  SHA512:
6
- metadata.gz: 0cd31a1a1225e5f16697380a30a68157cb13e7b0a0ddcbd974d818a2728c194190ad15b1dfbfe743e374164039daf96a949f255aa8f2d9881dcd9fd63d6b5e3b
7
- data.tar.gz: '0089382adb947409825906e6070ba327ad152a2d3af7c934c7d1728482eeca08d009d02832156104b8bc6ad2075433fc95746cc2fc1b8d14d6f8301d38a4b1a3'
6
+ metadata.gz: b2ee381a689a996e64ce5d8827af3a680db7311777cea6a50f472aa96d5d3ed45455761df0f8cc3bb945de86039b3a0ab92f0aad978c0cf3da8ae2b54af7fbd7
7
+ data.tar.gz: 4aaee6155ce95501883a3d63b46d21477f5f957dd60d53f76759ef0537fbf9782a38b250c62cee42d2ba70f01a473c0753bbdea3dc8457bf15b14da2093611f2
@@ -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 'http'
@@ -21,17 +21,43 @@ include AutoClickMethods
21
21
  using Rainbow
22
22
  include Glimmer
23
23
 
24
+
24
25
  class Naver
25
26
  def initialize
26
27
  @seed = 1
28
+
29
+ begin
30
+ # webdrivers가 사용자의 Chrome 버전에 맞는 chromedriver 다운로드 시도
31
+
32
+ # Webdrivers가 드라이버를 다운로드할 경로를 설정
33
+ Webdrivers.cache_time = 86_400 # 하루로 설정 (기본값: 86_400초)
34
+ Webdrivers.install_dir = "./" # 크롬드라이버를 수동으로 설치할 경로를 설정
35
+ # 크롬드라이버 자동 업데이트 시도
36
+ Webdrivers::Chromedriver.update
37
+ puts "chromedriver 자동 다운로드 성공"
38
+ rescue => e
39
+ puts "chromedriver 자동 다운로드 실패: #{e.message}"
40
+ puts "폴더내 크롬드라이버를 사용합니다."
41
+ puts "크롬드라이버가 오래된 경우 오류 발생될 수 있으며, 만일 오류 발생시 아래 지침을 따라주세요."
42
+ puts "1.크롬 업데이트 2.프로그램 폴더 내부에 ★tip★-시작시-크롬창이....파일을 열어 드라이버를 교체하세요."
43
+ chromedriver_path = './chromedriver.exe' # 수동 경로를 인스턴스 변수로 설정
44
+ Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
45
+ end
46
+
27
47
  end
48
+
49
+
28
50
  def chrome_setup(user_id, proxy)
29
51
  naver_cookie_dir = "C:/naver_cookie"
30
52
  FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
31
53
  if proxy == ''
32
- system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" https://naver.com/ --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id}})
54
+
55
+ system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" https://naver.com/ --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id} --no-first-run --no-default-browser-check --disable-sync})
56
+
33
57
  else
34
- system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" "https://naver.com/" --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id} --proxy-server=#{proxy.to_s.force_encoding('utf-8').to_s}})
58
+
59
+ system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" https://naver.com/ --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id} --proxy-server=#{proxy.to_s.force_encoding('utf-8').to_s} --no-first-run --no-default-browser-check --disable-sync})
60
+
35
61
  end
36
62
  end
37
63
  def chrome_start(proxy, user_id)
@@ -39,10 +65,12 @@ class Naver
39
65
  FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
40
66
  if proxy == ''
41
67
  begin
42
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
43
68
  options = Selenium::WebDriver::Chrome::Options.new
44
69
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
45
- options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
70
+ #options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
71
+ options.add_argument('--disable-sync') # Chrome 동기화 비활성화
72
+ options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
73
+ options.add_argument('--no-default-browser-check')
46
74
  options.page_load_strategy = :normal
47
75
  options.timeouts = {page_load: 20_000}
48
76
  options.page_load_strategy = 'none'
@@ -64,10 +92,13 @@ class Naver
64
92
  end
65
93
  else
66
94
  begin
67
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
95
+ #Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
68
96
  options = Selenium::WebDriver::Chrome::Options.new
69
97
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
70
98
  options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
99
+ options.add_argument('--disable-sync') # Chrome 동기화 비활성화
100
+ options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
101
+ options.add_argument('--no-default-browser-check')
71
102
  options.add_argument '--proxy-server='+proxy.to_s.force_encoding('utf-8').to_s
72
103
  options.page_load_strategy = :normal
73
104
  options.timeouts = {page_load: 20_000}
@@ -88,10 +119,13 @@ class Naver
88
119
  puts e
89
120
  puts 'proxy error...'
90
121
  begin
91
- Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
122
+ #Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
92
123
  options = Selenium::WebDriver::Chrome::Options.new
93
124
  options.add_argument('--no-first-run') # 자동 실행 시 나타나는 "첫 실행" 화면 방지
94
125
  options.add_argument('--disable-extensions') # 확장 프로그램 초기화 화면 방지
126
+ options.add_argument('--disable-sync') # Chrome 동기화 비활성화
127
+ options.add_argument('--disable-popup-blocking') # 팝업 방지 (로그인 창이 뜨는 경우 대비)
128
+ options.add_argument('--no-default-browser-check')
95
129
  options.page_load_strategy = :normal
96
130
  options.timeouts = {page_load: 20_000}
97
131
  options.page_load_strategy = 'none'
@@ -1181,7 +1215,7 @@ end
1181
1215
  puts 'Tethering IP change...'
1182
1216
 
1183
1217
  stdout, stderr, status = Open3.capture3('./adb devices')
1184
-
1218
+
1185
1219
  if status.success?
1186
1220
  device_id = stdout.split("\n")[1].split("\t")[0]
1187
1221
  puts device_id
@@ -1189,42 +1223,53 @@ end
1189
1223
  # ADB 서버 초기화
1190
1224
  puts 'adb kill-server'
1191
1225
  Open3.capture3('./adb kill-server')
1192
- sleep(3)
1226
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
1193
1227
 
1194
1228
  # 다시 ADB 서버 실행
1195
1229
  puts 'adb start-server'
1196
1230
  Open3.capture3('./adb start-server')
1197
- sleep(3)
1231
+ sleep(5) # ADB 서버가 안정될 시간을 충분히 주기
1198
1232
 
1199
1233
  # 데이터를 끄고 켜기
1200
1234
  puts 'adb -s ' + device_id + ' shell svc data disable'
1201
- stdout2, stderr2, status2 = Open3.capture3('./adb -s '+device_id+' shell svc data disable')
1202
- sleep(3)
1235
+ stdout2, stderr2, status2 = Open3.capture3('./adb -s ' + device_id + ' shell svc data disable')
1236
+ puts "stderr: #{stderr2}" unless status2.success? # 오류 출력
1237
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
1203
1238
  puts 'adb -s ' + device_id + ' shell svc data enable'
1204
- Open3.capture3('./adb -s '+device_id+' shell svc data enable')
1205
- sleep(3)
1239
+ stdout3, stderr3, status3 = Open3.capture3('./adb -s ' + device_id + ' shell svc data enable')
1240
+ puts "stderr: #{stderr3}" unless status3.success? # 오류 출력
1241
+ sleep(5) # 네트워크가 안정될 시간을 더 줍니다.
1206
1242
  puts 'adb ok'
1207
1243
  sleep(8)
1208
-
1244
+
1245
+ # IP 변경 확인을 위한 람다 함수
1209
1246
  robot_ip = lambda do
1210
- http = HTTP.get('https://www.findip.kr/')
1211
- noko = Nokogiri::HTML(http.to_s)
1212
- if noko.xpath('/html/body/header/h2').text != @my_ip
1213
- @my_ip = noko.xpath('/html/body/header/h2').text
1247
+ begin
1248
+ # IP 변경 확인
1249
+ http = HTTP.get('https://www.findip.kr/')
1250
+ noko = Nokogiri::HTML(http.to_s)
1251
+
1252
+ current_ip = noko.xpath('/html/body/header/h2').text.strip
1253
+ if current_ip != @my_ip
1254
+ @my_ip = current_ip
1214
1255
  puts "IP 변경됨[ #{@my_ip} ]"
1215
- else
1216
- puts @my_ip
1217
- puts '제시도...'
1218
- sleep(3)
1219
- robot_ip[]
1256
+ else
1257
+ puts "현재 IP: #{@my_ip}"
1258
+ puts 'IP 변경이 감지되지 않았습니다. 다시 시도합니다...'
1259
+ sleep(5) # 여유롭게 대기 시간 증가
1260
+ robot_ip[] # 재시도
1261
+ end
1262
+ rescue HTTP::ConnectionError => e
1263
+ puts "네트워크 오류 발생: #{e.message}. 재시도 중..."
1264
+ sleep(5) # 재시도 간 여유 시간 추가
1265
+ retry # 재시도
1220
1266
  end
1221
- end
1222
- robot_ip[]
1223
-
1267
+ end
1268
+ robot_ip[] # IP 확인 시작
1224
1269
  else
1225
- puts 'adb error pass'
1270
+ puts "adb devices 명령어 실행 실패. stderr: #{stderr}"
1226
1271
  end
1227
- end
1272
+ end
1228
1273
 
1229
1274
 
1230
1275
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zon_cafe_comment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-18 00:00:00.000000000 Z
11
+ date: 2025-03-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: File to Clipboard gem
14
14
  email: mymin26@naver.com