AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Adsterra China
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户Google、Bing官方总代  联盟流量开户FB资源,账单户,分享户,国内一手
FB企业户BM户账单户源头海外CL企业户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
虚拟卡 - Pay2.House【找量】BA独家Nutra单找量广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10016|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Lemft
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 / [" `- P1 N' T' o) D1 K4 _# Y! W
* ^" l( P+ ]* s" R

% L9 m, E. B1 z) [

  1. + j! c% F7 F  B
  2. # -*- coding: utf-8 -*-
    ! [) J4 T9 s. y6 E) ~6 c

  3. # Q/ J$ h. L$ d) i
  4. from aip import AipOcr% y( [, t: t' d8 l% B) H
  5. 0 {2 Z# m: Q4 H' C/ ?6 |- P2 F
  6. from selenium import webdriver
    7 L+ L- G# g0 z4 j

  7. ( A, k* r, ]+ Q* A% b
  8. import time: j# |' e3 g; O* U( x( H$ Q

  9. & |. o( K/ n6 Y: g- @
  10. import random
    ! }' k+ }( m, B) v) U% P5 q0 I( g

  11. * z6 X( y& Q' n% ]! q
  12. import sys,re! |+ M& l! S* U/ E
  13. " V  }1 i6 U' F9 Q4 z' g
  14. from PIL import Image, ImageDraw,ImageFont. M# ]7 V; S) x

  15. 0 ?. L; L* V4 K' z. S9 r
  16. """ 你的 APPID AK SK """! `7 d# G# d: T3 H* I# P- _+ M
  17. 8 [! u. M# l5 M( I8 L/ ?
  18. APP_ID = 'xxx', ?3 G7 D% E4 K8 f
  19. 6 H. U2 D3 ]) v7 i* L% `) q
  20. API_KEY = 'xxx'
    ) D: f3 X( r- `& v2 N) |" Q

  21. # C+ j7 z: }! D5 C+ b
  22. SECRET_KEY = xxx'+ F7 M' ?  t/ C- K' B

  23. 2 {. l* f* D4 ~+ J8 O) \6 a$ s
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)% p+ l5 C9 c9 ~3 `" H
  25. ! h: f# P8 H. u
  26. #PROXY = "127.0.0.1:8118"+ f" U) \* j" _2 D6 a6 r5 b; W
  27. , i% y7 f' ^& W: s* o4 X
  28. chrome_options = webdriver.ChromeOptions()* {$ r! k0 z3 G" X3 a) q
  29. * [& ~  H$ T" w$ y$ _
  30. chrome_options.add_argument('--headless')
    " G# h& M. s9 d. y+ T4 f9 y$ ?: d

  31. ! e+ i9 O' I$ j5 ^7 c* U5 N9 T
  32. chrome_options.add_argument('--disable-gpu')
      e9 q9 f# g2 f2 b/ p* ]9 X' s
  33. 3 U% R2 a$ s& r# Q5 ^- r- L& U
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)! B* \: Z- I: }
  35. % Q% O4 S5 U) H8 H' _7 }6 h
  36. chrome_options.add_argument("--incognito")
    7 K0 [0 i+ m( I) }# N# h
  37. 8 @4 {3 A& J0 M. v
  38. chrome_options.add_argument('--ignore-certificate-errors')) P) S; o. U5 {& X

  39. ! F" s5 C6 h  f. x
  40. # Win
    : Q+ L+ M2 g/ f' m! W! j2 w4 _

  41. 3 q5 |% J+ ^* W2 S! i
  42. # chrome_options.add_argument("--log-level=3")- M" G  _0 L, p
  43. ) e1 R2 s7 E2 K' S: E* m
  44. # chrome_options.add_argument("--disable-logging")
    " ^3 s' N' n! E8 m; {6 Y+ r- Y

  45. ) u  z4 K* n6 H; v- d/ c8 @
  46. # chrome_options.add_argument("--disable-logging")
    , }+ ?' s) u/ w8 ?+ h

  47. ' f& @, t8 z0 n9 C! C* ^1 S7 V
  48. #chrome_options.add_argument('--no-sandbox')
    - v0 R) p$ ?6 [) Y, |! c4 R
  49. ' I2 k; T5 D/ v
  50. """ 读取图片 """6 }9 s) r) x( g4 x

  51. $ f, j) j! n- {) ^; u, N
  52. def get_file_content(filePath):" @: d6 A' F! b  ~( n0 h' c1 D

  53. % H# e. u% d" ~6 j4 X& l# z2 O
  54. with open(filePath, 'rb') as fp:
    & ^4 T, i: m$ s0 H* G

  55. 3 `: a5 J) c* F8 O9 E$ [% X2 G
  56. return fp.read()$ A+ O% _4 @# K% X
  57. ' ]( e: o3 ~/ I8 K2 s
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)2 @. l9 _1 F+ O
  59. # ]- l9 v1 V$ F1 p, I2 Y% B
  60. driver.set_window_size(1280, 727)5 [$ }! ~% d6 t' j

  61. : X0 l3 ^8 G( B% c
  62. driver.get("https://youlikehits.com/")
    / M* d& Z( G2 [" n+ {9 n! A0 e
  63. 3 X% y$ t) j, n7 w1 r8 i% F# W% C
  64. time.sleep(5)( }# _# I& d; z: g* u/ q3 }: a+ n1 e
  65. : F9 [; g$ Y8 R" Z3 U4 J, t
  66. driver.find_element_by_id("username").send_keys('11111') #user- Y8 z8 K5 S) r) u% b0 q  A( K. O

  67. ( Y8 O9 Y: L" E/ [3 Q
  68. driver.find_element_by_id("password").send_keys('111111') #password
    ; \+ d4 P- t% a8 m) W3 q

  69.   w8 l# H% j, Y( s
  70. driver.find_element_by_xpath("//input[@value='Login']").click()% ?. b7 @8 d) R2 P" M

  71. $ f$ r0 O' N: j
  72. driver.get("https://youlikehits.com/youtubenew2.php"); s  }* T" k: b4 H

  73. 6 a% d4 I8 g  K) c' B/ r5 L
  74. time.sleep(1)
    0 }# e- j- |( k8 Q* z# ]7 k3 T

  75. 0 s( r% K6 Y" ?9 h# V1 [" B
  76. #Try Again
    ( Z4 V: ?) T5 ]' a: d
  77. ; a+ d0 i9 \4 p% e5 H& p
  78. def checkRefresh(driver):
    1 d" Y' _+ |( {3 C, [! w- U/ Z3 Y
  79. 6 q# m9 b- ~2 L' [! m7 d3 T
  80.         try:
    ! ]" s% m. R- _$ `) b: c

  81. ( a8 ^0 i& O+ L( x& m% S
  82.                 Refresh = driver.find_element_by_id('loadmore')5 k$ A; {* r& L
  83. 6 C  r  p$ ?. v+ `
  84.                 Refresh.click()5 E" h. y! c  e" c( |. G$ D
  85. ( m) e4 S0 Q7 r0 h2 T# Z
  86.                 driver.set_window_size(1280, 727)
    * M/ V* p) r5 @5 O7 N

  87. 1 m! b& r# J6 {
  88.         except Exception as e:
    4 Z  S' P8 d$ T  k% ?! M; [

  89. - d; D- z  m0 f- e8 t. w/ w
  90.                 pass3 K3 q: Y* c- ^

  91. 8 K' ]% Y0 w1 B4 B2 P8 b4 L
  92. def checkcaptcha(driver):
    + V! F3 W$ \" r# _' T; h# R0 W2 Z
  93. 5 w1 _$ A3 J* Z' Q8 p6 D
  94.         try:- \5 l  x& W: r1 V# l

  95. ) b8 F+ c8 B" x4 e9 f
  96.                 captcha = driver.find_element_by_id('captcha')
      d; F8 @0 M6 x- b
  97. 7 K# z1 U4 ^( D( f8 o+ b* ]
  98.                 print driver.get_window_size()# N+ O2 [+ N3 e1 Q
  99. ( h/ H4 j- z+ L4 e
  100.                 time.sleep(2)
    ( i& |7 H7 w4 U& b% r

  101. * p7 g" X+ w# {9 b) T; K! r
  102.                 driver.save_screenshot('/tmp/screenshot.png')  K8 o# r; }3 X( ?  y( u" S
  103. " T+ p% _# t- h; |
  104.                 im = Image.open('/tmp/screenshot.png')
    * O3 x6 w" A4 Z, b1 ?, u  m
  105.   u, B- Z, H' |( V: K' [  r
  106.                 #取消headless模式
    ( Q  T8 K- [& m2 @& e+ E& b

  107. ' U6 a8 M5 I$ Y2 Z8 C  K2 g
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    # H! i& D! c/ ~( I
  109. % d5 {3 I. h, o9 y2 C
  110.                 - G* L9 m4 |$ a

  111. 7 L! L# L+ ~; q1 a' k
  112.                 #开启headless模式; _1 m. P% B1 k7 E0 c1 _

  113. # `% U6 M9 f$ B8 R5 [
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    ( q. C  D8 Y/ |" n/ ]2 Y6 P. W  u
  115.   x8 h" a  i0 ]5 \; Q5 Q- c4 p% P
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    5 h& o4 |, R. y" i  f. i- G

  117. 9 a' Z; Q5 O) [. i" K% b
  118.                 left = element.location['x']6 w' h2 J9 ~  `3 E- U( y# O
  119. ) ^! c; A. {9 c9 E) c5 X- {0 {1 @
  120.                 top = element.location['y']
    3 H1 W! V+ i( G. u7 r5 j
  121. $ P9 N# z% E! K6 e7 c
  122.                 right = element.location['x'] + element.size['width']! A1 P* @0 ~7 ]) @
  123. ' M  x1 h% f$ L4 T0 G! I8 X
  124.                 bottom = element.location['y'] + element.size['height']
    # O2 o# t# ~& L/ j
  125. 6 ^6 v) T4 C9 ^% {4 R
  126.                
    . P- \+ `5 k+ l1 d
  127. % P- O- y3 ]( v+ @
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")4 i/ G! ]$ w  n
  129. " e. X5 P: G! p( G  W
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")& S" n& A: V1 c

  131. # N% L/ ?$ R: r
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    ) w7 r- o; S6 s

  133. ( p  I' h2 o* T7 ^/ [8 u
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
      H2 S2 n$ k7 t* G

  135. 2 }, C# e& g0 f! N5 Q. Y
  136.                 image = get_file_content('/tmp/screenshot1.png')5 X( O6 ~" b' K3 ?  H* x

  137. : ]* }1 O) l1 T) h
  138.                 a = client.basicGeneral(image), h6 W. c/ I. y- c

  139. 5 V1 A) D& ]# H
  140.                 print a
      \% i4 V- c2 B7 H& p
  141. - ^/ V, \% L, X% j/ f% E0 @
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])+ v6 a7 ^# D4 j8 b) }
  143. 7 ~. u2 f9 X7 h% z2 v, `
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)& v) K+ K. F4 g/ j! U4 c- U
  145. 8 a2 x7 Q% j+ B
  146.                 yzm = re.sub(r'x',r'*',yzm)) ^! k& n5 k2 W7 S% O3 p- v  g
  147. * I6 w. A# f# R: Z6 l2 h  o7 M
  148.                 yzm = re.sub(r'X',r'*',yzm)
    ! k5 }; e7 }/ ~1 @  H3 c
  149. $ z% e# D* w& I: z, J2 k* i. x+ d2 A
  150.                 yzm = eval(yzm)
    " A, @7 W; b7 f
  151. 0 }5 F- E, f& b  j" ?
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    ) O8 T) p$ \- f
  153. 6 g+ G; _) U' [9 G8 i$ l
  154.                 print '验证码: ' + str(yzm)
    * `3 d* P0 w1 B; b

  155. 6 ?( Y# i3 p/ }7 E% G1 c& n
  156.                 driver.find_element_by_name('answer').send_keys(yzm). z. g, U9 d% N6 ?+ L) G
  157. 8 T' a, n4 X! [5 e' @
  158.                 driver.find_element_by_name('submit').click()7 V$ O0 y# S- v& Z4 r
  159. * X7 u% }, n- G' g  n9 B
  160.                 time.sleep(3)- @$ w6 I1 b$ ~5 L

  161. 2 [  ]9 q4 u/ d% M
  162.                 return 18 J- A& Q1 m& P( j

  163. . ~2 ^1 k2 _* Q# P) s
  164.         except Exception as e:
    & N/ Z7 v, n& T: E8 Q; l1 Q& A7 W
  165. # l' d7 G9 t5 }4 g8 A+ I. T
  166.                 return 0- B9 f8 ]+ Q4 x5 [; y
  167. ) }7 b: g4 |( [8 H4 Z: w  B
  168. def followbutton(driver):
    * t1 w$ ?1 U" P9 i/ D; h
  169. . k0 F3 C) k  S+ v9 ~
  170.         try:' o: d1 V0 k9 u! e. f2 R) U( M
  171. / ]  o2 r' o" @6 t: t, ?( [# V9 y
  172.                 driver.switch_to_window(driver.window_handles[0])
    + F, P6 J. P/ \' o
  173. ; h& ]2 q+ ^# R$ k$ E, t
  174.                 points = driver.find_element_by_id("currentpoints").text
    : z: K8 j4 i* d
  175. + X* F1 K2 t8 e
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    5 [  l5 d  x# U( P
  177. 9 X$ c9 h4 O. F: F
  178.                 driver.switch_to_window(driver.window_handles[1])
    4 g, \' M2 ]: m; ?

  179. * M: i% z# b0 A
  180.                 VideoSource = ''.join(driver.page_source.split())
    . A+ M5 |+ }7 L) {4 r# T
  181. ; h( }& l) V* F4 A: p
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    : `0 r. J+ S* A8 c, j0 d# t
  183. # _! y# t, Q0 m6 s  g+ K
  184.                         print VideoSource
    2 V$ q2 f( \" h9 u+ h6 W
  185. $ n) m! J4 S9 I( w# }3 z
  186.                         driver.switch_to_window(driver.window_handles[0])
    % q( G* M9 p" t) \

  187. 0 y  H: G8 b) S2 L9 |2 P
  188.                         print "Refresh..."
    ) a7 y# ]/ z- t
  189. ( y+ |3 s0 v7 ~
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    8 P! a1 ]! u1 a# d, B4 n) p* M, `
  191. 5 D+ f5 r2 `  }" U
  192.                         time.sleep(1)4 v' {5 ]3 B/ I  Y2 b" }2 u
  193. 6 m6 ?5 i! L0 _6 p4 W- P2 c1 }0 H0 ]
  194.                 return points% w- h( q- A+ I  C0 p8 ]& k
  195. ( J6 }/ Y2 ]5 M% ?; c9 m7 M
  196.         except Exception as e:, Z$ h" d& r9 k* D

  197. ( m5 a3 H6 v2 B
  198.                 return 0) r1 l! {+ M" R0 Z# W6 t3 U

  199. & w' x" j2 I7 N1 p7 i1 Q
  200. for i in range(0,5000):
    , m% `8 `/ M* w8 {
  201. ; N- \+ `8 O. c. U
  202.         try:" l1 U, s+ Z  U8 A6 Z9 b
  203. ' O. A" _3 J% n% o& u/ V
  204.                 captcha = checkcaptcha(driver)7 G# z, g* @* Y9 I- E
  205. 9 F8 K7 E7 C% ~( a, ]
  206.                 time.sleep(1): X/ V4 @( j% N
  207. " G& Z$ `8 C) T* ^: n
  208.                 checkRefresh(driver)
    7 K$ `* F, w, r0 x5 b6 d3 K0 d
  209. % @, |) |& F) E& n4 [8 p) k( o6 V
  210.                 points = followbutton(driver)+ }& R0 f0 c& L1 n, j- e* c1 I
  211. 1 F( V7 }) S% i  |/ J
  212.                 time.sleep(65)
    3 E( ?4 e/ n) M; m  A% _2 p9 z0 P
  213. $ v  d( g2 n2 U7 E
  214.                 driver.switch_to_window(driver.window_handles[0])
    ; s( n2 e/ r; V8 O
  215. 5 {% G+ {  c9 }0 l. {; c
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    . o( C1 R  k) F6 d- T( l

  217. ! T2 ~) o& l$ c( ^
  218.                 print "points: " + str(tmpp)6 P) M/ N6 F$ p/ X5 p
  219. ! X& c) j# m9 d  i1 z
  220.                 if points == tmpp:- u9 A. m/ g1 P$ m  Y' N
  221. * @, r. v5 E' L, P9 p; j' M- Q
  222.                         print "Refresh..."
    - {7 `8 O, [2 w

  223. 2 J' `0 J8 J+ h7 R0 e. D! ~, _5 y
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")' s! T; f) `& E# l/ Z

  225. 0 l1 Q8 D! r+ b  f* L- ~9 r' I' O
  226.                         time.sleep(5)# @, l3 T# w5 p% X9 z

  227. 5 b# U# E$ J/ d: f  x( U
  228.         except Exception as e:
    " s8 [# ]3 }4 t4 w& p) ~( R  f* Y

  229. 5 p8 p$ K! t; b0 v" i
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    % ?/ ^! \. w9 v

  231. ( A% Q7 n) S9 s9 D
  232.                 print 'error: ' + str(e)' Z' F3 r: `# A% n5 c

  233. $ N& |" t) S* n6 ]
  234. driver.quit()) P8 R  n: r7 o$ ]# N6 `- ~; x5 E
复制代码
! q6 I; i( V& U" M- O

, _  p5 _' _. S) I5 g0 H
( }( K" t! p" L  V. J" @! Y5 _ 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 6 B$ D4 O& ]8 Y% G. M
* n0 t! r$ W3 I% S8 y0 w" @2 C' r) x

评分

参与人数 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

主题

988

广告币

1484

积分

高级会员

Rank: 4

积分
1484

社区QQ达人

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

使用道具 举报

176

主题

1119

广告币

4181

积分

超级版主

Rank: 8Rank: 8

积分
4181

社区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:11
! `) I" B/ c3 m7 J, u用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

6 M; z6 h. L' E5 Y小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
& S. U( ]3 x6 N, D( ?( ^- @; I1 a/ A$ [! X/ ^
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 17:36 , Processed in 0.050930 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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