AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
⚡️AdsPower:安全不封号,高效自动化广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN
7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值Facebook 批量上广告
尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)
FB企业户,TT老户,GG老户源头海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]PTM虚拟卡[OPENAI+全场景通用]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量->Tyver SPY汇聚海量广告创意高质量代理⚡️住宅⚡️移动
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10152|回复: 7

模拟点击 验证码识别 全后台 youtube订阅

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
5 e3 n7 P6 {* K0 d: ~5 |6 c# Y1 U/ \6 C! @' k

# F, V$ g' r/ z

  1. 6 [! j; L9 k! y' F+ Z$ D
  2. # -*- coding: utf-8 -*-
    * b6 W) ?8 B9 m. o0 u" ?
  3. 4 c' D4 Q9 b  @
  4. from aip import AipOcr2 n( G1 G9 p1 }. ~; m5 Y( X# q
  5. & ~$ R4 `* g- F# V
  6. from selenium import webdriver# k7 ^) l: T0 Q; a, }
  7. ( m  l5 S: K  o
  8. import time9 E( M9 x$ P6 `

  9. 3 K6 }% q5 p0 A" v+ e$ B( e
  10. import random
    . {% \) S8 Y; j6 N2 @
  11. 2 V" \8 ^# }$ x' n7 o7 s' X
  12. import sys,re9 Q9 Z# G3 c7 E% {
  13. ) Q- L6 V3 [2 w  k& n9 Y
  14. from PIL import Image, ImageDraw,ImageFont! o. V6 L# U" T4 w" j( S
  15. ! q5 E% j/ K- |" l- d" n
  16. """ 你的 APPID AK SK """: I& J" @, [: ?5 h

  17. " L7 g( |) |. }/ ?& C
  18. APP_ID = 'xxx'
    ' a" M/ }0 n3 z, F- [! W

  19. $ g( j  ]4 v! v+ o& R1 z; c+ H0 S
  20. API_KEY = 'xxx'# q: H2 D* M& t: v/ Y- v" R

  21. ! C: [; [& @: }5 f1 @: u
  22. SECRET_KEY = xxx'
    & B3 Y* j2 K  Q: L7 `7 @! z
  23. & W4 ?; F. i9 ], e4 g3 p+ Z3 g7 ^
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)# p& Z' t. j. ~: @- R

  25. ! \$ v5 b* w+ H: W: n
  26. #PROXY = "127.0.0.1:8118"
    # _5 |7 w" |( ]1 F: |
  27. 0 D- L- C+ E2 }9 K: Q
  28. chrome_options = webdriver.ChromeOptions()( R  g! _3 j* a- |
  29. 5 t$ N9 a0 ~1 i( ]0 m' `
  30. chrome_options.add_argument('--headless')) J, W: f" b' R& Q2 X4 z( E1 ?

  31. 3 h6 E% B$ w# i- X
  32. chrome_options.add_argument('--disable-gpu')
    3 X( v6 I3 _9 y. V9 D, K5 f2 l
  33. ! C2 K$ g4 Q: `5 O: [
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    1 A5 T7 [, ^- B6 P% ^

  35. % h1 e4 f; B) h0 ?8 P: \
  36. chrome_options.add_argument("--incognito")
    & N0 v5 y, ^0 O0 T  J
  37. , w  F& X4 z+ U0 f8 S6 ?3 ^, k+ n6 Q
  38. chrome_options.add_argument('--ignore-certificate-errors')+ X) M  A1 ~7 Y% r, P: S

  39. 3 c  y/ E- u( `, j- ]2 \; c
  40. # Win8 z3 V' S4 A* U1 C' S" x3 v, z3 s
  41. 0 _0 l+ r7 ~% y' O  a3 _/ f& j
  42. # chrome_options.add_argument("--log-level=3")" O, y+ f$ b9 S) x( J3 W# i- d

  43. 7 ^# w' x& y) t9 R3 ]$ Q' e
  44. # chrome_options.add_argument("--disable-logging")
    0 u7 d9 R5 W% {5 U
  45. 1 p/ l, I6 E5 \# S' U7 l3 }
  46. # chrome_options.add_argument("--disable-logging"), X& g0 J) f0 L* T- }5 c2 c
  47. 0 Q- R( C- k. y+ d2 s& S
  48. #chrome_options.add_argument('--no-sandbox')
    # A0 h! A7 n5 I4 p- o
  49. # i0 ]1 D! ^' {" p& W& F
  50. """ 读取图片 """9 Q6 v: F! k0 u( ]
  51. 0 S$ k, u5 c1 R0 p  E7 o
  52. def get_file_content(filePath):, ~2 G, ]4 Q1 n5 J  ]3 G1 l% Z

  53. " n& T- ]3 G; a% W
  54. with open(filePath, 'rb') as fp:( d; _6 E9 Y( }: r% K1 g! [5 A
  55. 0 o* g2 p' J9 O8 X% b$ S
  56. return fp.read(). @& M; k9 f" g/ F: P7 X; R

  57. * W0 V( R" `% M' l) f4 r; C
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)' D% O/ o0 z% r; H
  59. $ x  Y0 L+ [: j8 Z/ H/ M; {4 K; O
  60. driver.set_window_size(1280, 727)% d9 R3 ]& w0 h1 Q' O  _; _
  61. ' Q; ?( H2 _4 H: F. ^# ~
  62. driver.get("https://youlikehits.com/")+ C2 c3 F2 d( y

  63. 6 `5 b- Y$ G( E% U3 G5 |& G
  64. time.sleep(5)
    - F8 K9 I+ n7 d: E$ p8 S. u6 a
  65. 2 i/ O* S- _0 R1 U8 K
  66. driver.find_element_by_id("username").send_keys('11111') #user
    % ?) O' J& f* s# c: N6 b

  67. 7 C9 i. H7 y" @9 @8 T* l
  68. driver.find_element_by_id("password").send_keys('111111') #password
    % ^* R) ?+ o+ Y1 i9 P* r4 l8 l9 `( \
  69. + p* ^: c# r, r4 E( g$ d
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    2 Y% x0 `3 u/ l! m2 B8 v. F

  71. ; T9 s, \7 N; b+ U8 p6 k7 \- c
  72. driver.get("https://youlikehits.com/youtubenew2.php")5 e( p; A" M* |# s' ~* q2 z
  73. 5 ^; d8 L6 X' m2 D' `
  74. time.sleep(1)
    : D) r, _+ @' ?: |$ \+ J
  75. & c9 V$ H4 I: U! s% k9 M- D" R6 x
  76. #Try Again* H/ k" T4 [# |1 [5 `5 E2 ]+ a9 s

  77. * Y! @. H, l  k$ }7 y; H: p; j+ j
  78. def checkRefresh(driver):6 [! y* I4 y2 {% A1 B6 W

  79. # S+ Q1 x- @0 k# {
  80.         try:& b$ J6 H- y. f8 S
  81. 5 V5 i* m$ @0 A7 _4 Q; U
  82.                 Refresh = driver.find_element_by_id('loadmore')
    ; f* ~* p+ t2 \% O# X; `: I
  83. 1 x* j! m" \( t
  84.                 Refresh.click(): V) ~9 c( z* k( A6 r% M
  85. 3 g. q. P+ K8 z1 O" c
  86.                 driver.set_window_size(1280, 727)8 r# x* @1 k0 f4 A% N1 b* r
  87. * ^: h8 H& C/ |9 K8 d, L, \# l
  88.         except Exception as e:
    # Y3 Y7 [* H6 U0 e- v7 V7 }
  89. & O2 h( L- d! Z" q- K& S3 Z
  90.                 pass
    / d+ t. s% {& e/ U, H. o1 }! N
  91. + C# b* j. D9 C8 f( D% G4 ^
  92. def checkcaptcha(driver):0 u! z7 f9 h% g! L, n2 A
  93. ( j, F8 I4 p/ L) w+ P
  94.         try:: T3 h/ s( ?; t  O1 ^& S

  95. ( y. y: z0 P) Y3 Q5 p
  96.                 captcha = driver.find_element_by_id('captcha')
    ' U% S+ B! q1 K6 w7 q

  97. & g+ Y$ D, a# l+ Q  v
  98.                 print driver.get_window_size()4 J* `4 s! z( f. g. w

  99. 4 u! Z+ y( _9 _
  100.                 time.sleep(2)3 S& d7 u2 l6 C

  101. * W" ~* i% M0 C' q/ x, E6 |
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    - n" ^5 k5 O2 O: b: u! ~7 c

  103. ' y# b$ Y3 E' G7 w; r
  104.                 im = Image.open('/tmp/screenshot.png')( y& W9 A9 D; M& }# Q' ~: V

  105. 4 O4 ?( y) `$ a
  106.                 #取消headless模式
    2 j( z& F* T4 M
  107. 5 c8 n8 [1 ~& p0 V# @- p( V# m
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)" \! Y% {0 C; V. ?
  109. 4 y' D$ H, k1 |
  110.                
    6 x1 w6 r: d2 ~
  111. 0 U" a# }& Q3 ~' _$ Y
  112.                 #开启headless模式
    9 Q6 O. m) h. W3 k% Q& w
  113. ( t+ \# F6 V: U
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS), ^2 B; R. M. Q1 s0 a

  115. 7 M  }. k: A) C' W# n
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    * S! ?) f4 U2 L& D3 v  G- R

  117.   |1 `( `, p6 ~+ Y! \7 k
  118.                 left = element.location['x']2 C  V6 v: |' I; E: {# b% N

  119. ' x! I. Q8 d$ ]2 I- j( z$ E
  120.                 top = element.location['y']
    6 v0 \7 `! k  x0 j: l+ W& u
  121. ' _" ^9 l& o9 h" q$ z. `
  122.                 right = element.location['x'] + element.size['width']( ?3 B; C& ]" X8 I

  123. 4 R+ j& P3 y' Q0 V) Q/ Q
  124.                 bottom = element.location['y'] + element.size['height']
    * d1 F7 J" A- h; V

  125. 7 _$ F1 P: E/ Q9 [
  126.                
    % {3 P# n  z! Z; P9 W2 J$ R$ u

  127. ! j8 e1 B1 J) h/ W  r6 _
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img"); M/ U9 m; U1 Z: Q8 `
  129. 3 _) x# l6 z- {' i8 P% M
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")9 X+ p" ~+ [5 A# J! ^! H) [6 N

  131. ; Q1 @9 {1 A, o) ]$ c  e7 x* ^
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")% d* x2 S, m/ ]# o: V8 A& w
  133. / H( f* w/ ?$ J( c$ Y4 b6 t
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    $ }5 z( ?0 b8 H) o
  135. 6 e" M3 ^% S9 F/ ^/ a% ~$ E) @
  136.                 image = get_file_content('/tmp/screenshot1.png')- I7 u6 p) ^& D  C& P; ^
  137. 0 i$ b& \( S1 ~1 r* z" ?/ e
  138.                 a = client.basicGeneral(image)
    * o* v! G, |1 C8 g  `& _! B

  139. & c; M$ R" I& |0 L" Z, k; X# Z
  140.                 print a& |+ H# d  R! r

  141. % F# ]6 e9 ~+ G/ o
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])- [) I6 ~- Q/ s9 u; V1 M4 F

  143. : Q4 g9 \$ [+ s* z
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)* n6 z( o% w+ k7 G: B$ |( r* {
  145. 4 L" G; v. {, b
  146.                 yzm = re.sub(r'x',r'*',yzm)( S% T+ m! F! D' T- A# Y6 m

  147. 9 u, U# I7 b: u* Y% ^2 g3 A
  148.                 yzm = re.sub(r'X',r'*',yzm)
    2 M% V5 f5 [' D
  149. 8 _" a' y* r& j* m6 Z9 z
  150.                 yzm = eval(yzm)( n5 b* [0 C, B+ w6 i

  151. ' g5 F: n$ E4 W+ a# p1 U
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))) a# [& z: x; W4 ]+ w4 i& x% {5 \

  153. : X2 I+ U. A5 o# X/ i
  154.                 print '验证码: ' + str(yzm)4 z- a# v$ d* K

  155. 3 K- u  ?7 P- Y* I9 C1 T
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    - j3 y8 p; z# F8 m: p. ?" x: u  \
  157. 1 n+ Q4 S% f& O; y' U
  158.                 driver.find_element_by_name('submit').click()
    & ?/ a2 e7 L( F) J/ J5 R3 U) y  x

  159. : y5 _" x9 E8 {8 L$ z& Z# A" |3 g
  160.                 time.sleep(3). q4 Z, r, _0 W. `( Y( B

  161. 7 ~4 W4 p: j' d  \  f' M
  162.                 return 1
    / V% Y# V4 X  X6 Y3 k
  163. : P( U( X2 d* \; Y" n8 z. ]! ^
  164.         except Exception as e:
    $ G) c6 o4 Y  C! _

  165. * F9 j% [) H, i3 s( H
  166.                 return 0
    ( m) f6 Q  `' a) t5 M

  167. ! d3 s& F% ~5 e# B# J: u
  168. def followbutton(driver):/ W0 ]7 O) E6 }$ @. y, O% w7 R  V

  169. & j2 a1 D/ n9 U- P2 X1 t5 N+ W5 e2 M0 i
  170.         try:$ i* t* y% Z* [

  171. / Q! Q6 |* e' S/ F/ E# q
  172.                 driver.switch_to_window(driver.window_handles[0])
    + F- b$ f9 Q/ T1 E6 k5 I1 z$ V
  173. - g* a/ i3 o6 _- o$ l) s
  174.                 points = driver.find_element_by_id("currentpoints").text- g( d% f3 N# [2 G, ^
  175. 3 N, `+ I' ^3 L! ^8 [) _
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    % p8 x; W5 N/ Q: g( A$ A/ L, P; h1 o

  177. 1 b: s& q! v" n# t% z3 m; _
  178.                 driver.switch_to_window(driver.window_handles[1])
    0 m# D5 y" B  _0 d( S
  179. ' S1 k! l% n0 S5 A( G* P$ L
  180.                 VideoSource = ''.join(driver.page_source.split())1 M" N: H2 y/ d# B6 K
  181. 0 D& a! L- s; h0 v5 i# @7 V( e
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
      F  v8 v/ b8 N

  183. 2 a- e/ b6 t" k( S
  184.                         print VideoSource$ z' I! b$ T$ c: _% _: W
  185. # x( |3 J7 g- K4 T9 c
  186.                         driver.switch_to_window(driver.window_handles[0])
    . F2 g" B, C8 k( j: N
  187. ) W. c9 M1 }* a
  188.                         print "Refresh..."& _$ w, U6 [  S% x5 b1 {5 @
  189. 8 n$ G$ u8 ]+ d% D1 L+ j
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    * k/ w; V2 N. h! Y, i6 Z5 `

  191. & x( l% l0 P: ]3 _
  192.                         time.sleep(1)' z- N- e* Q) {
  193. % L; l1 G2 V* o" Z5 I( B* ^4 o  O
  194.                 return points1 {% ?# ]. T* s7 p4 f

  195. : l( W0 O# |& @7 |( Y5 f. n/ v
  196.         except Exception as e:
    , d/ ]) L# \% ^9 f! h

  197. ( b  x9 [$ ~' p+ e3 U4 W5 S  h
  198.                 return 00 K! Q7 V" S, m4 g' i

  199. ) I( H% o! U  Q# S
  200. for i in range(0,5000):/ z! q" `. }; z* A0 Z
  201. 7 e+ @6 A' Y% x* b) `
  202.         try:8 |9 k/ G/ l9 i9 \, J
  203. ( z5 {3 t; d8 `. A5 o
  204.                 captcha = checkcaptcha(driver)
    ( {2 h5 }$ K- K! }$ k9 j( C

  205. ) j6 p$ _* O8 F2 l: h4 q
  206.                 time.sleep(1)5 s. p! W+ b' Z. I2 t( Q! e; V

  207. 6 n8 _8 E. X. g! A
  208.                 checkRefresh(driver)5 ]6 ?2 y" I, e
  209. 5 \3 k6 W  ^; N, g! T' |9 U
  210.                 points = followbutton(driver): l& n5 h; v9 }% {7 e6 d1 h% f" h

  211. - a& Q) e/ [& \& Z" n8 U
  212.                 time.sleep(65)
    4 B# G4 p9 N6 `1 T! @
  213. 4 \7 L. D* M8 {8 Z6 Y
  214.                 driver.switch_to_window(driver.window_handles[0])! `+ }* B# |& u. n' n
  215. 8 ^7 m& [9 Y  A; Q  Q8 f; v
  216.                 tmpp = driver.find_element_by_id("currentpoints").text' G2 I2 l2 K6 f7 O9 Y: ^1 N- s

  217. 7 F$ V6 C0 ]' w6 s. a( t' ^& Y
  218.                 print "points: " + str(tmpp)  y$ `1 i$ P7 N+ J: j8 n/ m

  219. ! ]: T# M& T  [" j6 D, F1 y
  220.                 if points == tmpp:
    7 k7 |2 A, k0 c4 u5 ^% s+ ?; u
  221. ( v/ r/ \* o4 Y9 k9 q
  222.                         print "Refresh..."
    * t: o9 p0 C- K( ~+ U* d- u

  223. 7 q: ], l+ i6 z" E2 W9 @
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    4 n" t4 P4 e1 A; ~- W: O5 V0 O; f9 c
  225. " g  G, P0 b7 C  P7 ^$ w: l7 D3 N( L
  226.                         time.sleep(5)) b5 h; Z) H, M( R' k3 ]
  227. / x  Y9 B6 b& i: Y
  228.         except Exception as e:
    * w0 E+ F, ?# g6 }8 B) d* t: n

  229. & ?1 u5 X- p( j/ N- {
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    / v0 f4 A) a% Q6 Q- E

  231. ; L( p; ~$ F6 O& K
  232.                 print 'error: ' + str(e)$ d; ~7 X1 c" G  ]! q

  233. . B+ K% Q* i) D2 L, i; B* L
  234. driver.quit()5 i  n" {" x- w& A: y. x$ ^* y
复制代码
% ?2 J% p  I2 T2 r! R# N6 F: w: M

& e2 a1 _; `- e$ r3 Q: E8 q3 U% L. }" ~% G  v
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 ' V5 P6 g& O( C& ^7 [9 s

% l: B( p2 y7 e

评分

参与人数 1广告币 +20 收起 理由
小白龙 + 20

查看全部评分

相关帖子
回复

使用道具 举报

2

主题

25

广告币

80

积分

初级会员

Rank: 2

积分
80

社区QQ达人

发表于 2018-8-29 06:59:13 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

32

广告币

102

积分

初级会员

Rank: 2

积分
102

社区QQ达人

发表于 2018-8-30 10:17:14 | 显示全部楼层
跟我写的几乎一样,我也是百度验证码识别的,建议可以增加cookies保存和读取功能,省得每次都的输入,用户名和密码。他家是可以用cookies保持登录状态的。
回复 支持 反对

使用道具 举报

20

主题

36

广告币

255

积分

初级会员

Rank: 2

积分
255
发表于 2018-9-1 10:16:57 | 显示全部楼层
自动在https://youlikehits.com/ 点击么?
回复 支持 反对

使用道具 举报

2

主题

172

广告币

254

积分

初级会员

Rank: 2

积分
254

社区QQ达人

发表于 2018-9-1 20:51:05 来自手机 | 显示全部楼层
大佬太哇塞
回复 支持 反对

使用道具 举报

9

主题

992

广告币

1490

积分

高级会员

Rank: 4

积分
1490

社区QQ达人

发表于 2018-10-11 00:42:08 | 显示全部楼层
自学了几天selenium能看懂一小部分了。
回复 支持 反对

使用道具 举报

176

主题

1132

广告币

4195

积分

超级版主

Rank: 8Rank: 8

积分
4195

社区QQ达人

发表于 2018-10-18 15:11:47 | 显示全部楼层
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

点评

小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈  详情 回复 发表于 2018-10-19 21:57
缅怀骄阳
此ID(小白龙)仅限在论坛使用,其他平台发生的任何交易纠纷与本人无关,善用搜索远离骗子
回复 支持 反对

使用道具 举报

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
 楼主| 发表于 2018-10-19 21:57:02 来自手机 | 显示全部楼层
小白龙 发表于 2018-10-18 15:111 ?; c% [* \, Y6 ~; E
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

7 z  Q0 R* }9 l2 t7 g" x6 t小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈! L0 p# v, [; s/ i' A9 O1 Z& T! o$ ]/ ]

/ X  E9 v: e9 S8 v- c
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2025-11-1 01:10 , Processed in 0.050440 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表