找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手TK加白户/二解户/FB海外户/GG老户
最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇
✔Taboola海外户源头广告位出租虚拟卡返佣1%,国内持牌机构 
查看: 10370|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Binom_AdvertCN
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 & g6 o4 W5 Q! z" G+ ~. f
; ?) D1 _9 J/ }; h: ]
3 ]: i- h3 G  t9 j0 g: [0 H
  1. . h8 y7 H# c0 g; f0 f
  2. # -*- coding: utf-8 -*-$ y" `) L! K2 j7 M

  3. 9 P4 D" g8 C7 u
  4. from aip import AipOcr( p6 i" X2 Z/ Q* e& |% t* B
  5. 7 w" N% a' s: {0 W" y
  6. from selenium import webdriver
      x  J% t) s! s

  7. 1 J  Z9 L" l# O0 Q4 w" @2 w
  8. import time
    . o5 s3 F# o6 M2 y) O3 [

  9. 5 T: c. D" g$ ~5 x& [
  10. import random  ]" Q" C. \! D, u  G

  11. ; K" y/ `6 W  b
  12. import sys,re
    ' ?, t3 L: m1 D. a" G
  13. - m; D$ a! ?% R' @7 I- l
  14. from PIL import Image, ImageDraw,ImageFont" ?1 F4 [9 r: p. ]# i" z

  15. 6 Q- O9 v) e8 I, }$ Y; d3 _* q
  16. """ 你的 APPID AK SK """! u# P/ S; ~% m6 R, ^1 X! P

  17. 3 R& e, _3 e7 c8 Z3 d( a6 \
  18. APP_ID = 'xxx'8 x6 O2 z; m1 ^9 D* }% H# P
  19.   t4 T0 ]2 Q. B6 x- b& J+ K
  20. API_KEY = 'xxx'/ C/ z2 [' d) K# z7 R5 j  G* b" h% z

  21. - D" G# |5 }$ w( ~% R1 Y1 @
  22. SECRET_KEY = xxx'
    / r/ e" E* b# ]# i' i0 X

  23.   w1 s+ i  S3 u: I( V
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)- B8 u' v7 e% n( O2 Y2 b
  25. 6 W, H$ F! `. T  X! D2 F
  26. #PROXY = "127.0.0.1:8118"* X& `# L! ]2 ~: N& t" R* j
  27. - g* ^' W& m% a) G
  28. chrome_options = webdriver.ChromeOptions()9 N8 ~0 N5 Y: c* [

  29. ; G: d* ^5 p. d/ i/ N: i' ^
  30. chrome_options.add_argument('--headless')+ q& r, Q" |6 k

  31. ! k1 B+ S  o2 [, _* A% Y6 [
  32. chrome_options.add_argument('--disable-gpu')2 a" E. W% P- [; j5 h" x
  33. ( D% O% i) k5 R4 [; p
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    ! H8 D: x! O- O

  35. & z& m2 B; b5 I9 s+ `& [8 w0 h
  36. chrome_options.add_argument("--incognito")
    ! {3 e# z. j: M) u1 k

  37. / `6 _" U9 j$ n' Z" M) r  o# W% w) }
  38. chrome_options.add_argument('--ignore-certificate-errors')
    4 E9 @7 f5 o4 p% ~0 [% D6 a

  39. 5 I  n7 e  E0 q" j! w( I  \
  40. # Win: p  W( k5 E+ X4 v
  41. ' x1 a9 a( L+ M, E
  42. # chrome_options.add_argument("--log-level=3")
    * w3 T/ k2 A3 N/ \' Y

  43. 6 ]; k& e$ I4 e2 _* H
  44. # chrome_options.add_argument("--disable-logging")( j& i4 C5 d! g

  45. $ r" {' t/ k* T! T1 k
  46. # chrome_options.add_argument("--disable-logging")3 C! w" H& z$ E/ M0 o; z6 M

  47. 0 r1 X5 R! Z! T$ L- j1 L8 ?
  48. #chrome_options.add_argument('--no-sandbox')7 B4 L0 |3 n) r
  49. 4 K  t1 H7 G* H2 Y6 R2 Z( y
  50. """ 读取图片 """! P" S1 q) R4 [9 |

  51. ! i# @1 _+ c9 y
  52. def get_file_content(filePath):
    8 b$ `9 V' s( k2 |" B, u$ u8 f

  53. # t8 @9 C+ k0 n2 t3 U
  54. with open(filePath, 'rb') as fp:2 C, a" Y! I9 |( {

  55. , w; ^  x* m: c  I6 v
  56. return fp.read()  R, _& P2 N$ V& l& _1 L7 P5 \% k# c

  57. 0 H: h+ J5 ^4 _  J
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)+ x* h  i( X% X0 a6 W8 S

  59. $ N, [7 o; H; H7 n# \/ ]* U2 [
  60. driver.set_window_size(1280, 727)8 r4 D" ~/ D: R6 [6 T5 p+ r/ [

  61. , _5 d  e* {: W6 D6 }; a
  62. driver.get("https://youlikehits.com/")2 z. K5 ^% Z* D9 P0 v

  63. 0 t' J$ C  E1 k- z0 w: j$ K
  64. time.sleep(5)7 h9 V7 m4 L' t
  65. ) d% L! F! e$ J- A
  66. driver.find_element_by_id("username").send_keys('11111') #user
    * F1 x( ~3 @( }5 }: f, K

  67. 5 T1 M) g8 T: w3 H
  68. driver.find_element_by_id("password").send_keys('111111') #password/ H# E' o4 s$ D& b
  69. ( q2 J! [) l8 A7 ^9 c& a
  70. driver.find_element_by_xpath("//input[@value='Login']").click()3 x) o& U( ~* S$ B# Z# E
  71. $ \3 r' Z7 e4 i
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    5 X; o( y7 X+ r. A; U- R' x6 M7 H( P

  73. ( N  N  U. E: t1 L) q6 y# u% M0 w9 M
  74. time.sleep(1)
    9 U3 ]  l5 C2 ]! [& y$ s

  75. ) k$ v2 U% B8 |2 @3 \4 r
  76. #Try Again
    - u8 ~- e4 h+ g3 u5 X* y
  77. % J9 {: x8 e" [/ x# F. p
  78. def checkRefresh(driver):
    # _' q! y1 a6 j

  79. * F# s# X1 c( w$ \# h5 P* f+ N! p
  80.         try:. W3 \; Z) p& E# U
  81. 6 m5 X8 V" e+ v( j, _1 T
  82.                 Refresh = driver.find_element_by_id('loadmore')% Q  }  j) E5 V# T2 B$ O( Z
  83. " e1 _. z, o- _# J5 ?
  84.                 Refresh.click()
    " Y5 V8 S* t: M6 J+ u2 L: B
  85. - i3 O0 }9 \3 {3 c4 w
  86.                 driver.set_window_size(1280, 727)( ^7 D# X1 O! m. w: ~
  87. , p, m9 C! m: `9 b7 L
  88.         except Exception as e:
    7 Z0 o/ f: z0 x
  89. 0 f: v# H: X, |4 I
  90.                 pass
    ( Z3 f+ b2 M7 h; H# w' ?) e0 d+ E
  91. 7 \% ~6 i1 `0 W  I. q1 d
  92. def checkcaptcha(driver):1 W) S6 H$ M1 t5 T3 B, {5 a
  93. % X( o  v) o3 F3 x# p
  94.         try:
    1 H" K' F' {4 N

  95. 1 q) u% [. I3 N# H4 U" r
  96.                 captcha = driver.find_element_by_id('captcha'); |* v3 S% m2 G: }, ~6 c, _
  97. / d& D# F2 c4 J3 U$ v  K+ I3 n* I
  98.                 print driver.get_window_size()
    & D) b: ^- e' ?7 b2 ^/ e

  99. , r# L% ?* [& m3 D6 M
  100.                 time.sleep(2)( E4 M9 n& w* ]  ]
  101. 8 v* `( d% _. Q9 f
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    9 r. B9 M/ I+ o
  103. , Z7 N1 p% H0 k$ R
  104.                 im = Image.open('/tmp/screenshot.png')" n6 y* L3 N3 X" g# v
  105. ! N. W0 S  G, q; f2 t# \3 k3 r* T
  106.                 #取消headless模式
      q  T2 G3 e( X* V9 Z3 r1 {
  107. 8 a; r. L. _( W8 K3 ^' @, C& P
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    ; x( f5 I. M. |3 m& J" j) I" P

  109. $ B+ c/ G' A6 d
  110.                 0 |0 N# g; x/ D# G0 [' C

  111. - a+ G* M; ?# k3 R
  112.                 #开启headless模式( ~: \/ ?* |: i+ D7 ]

  113. : p7 T1 l2 f  t2 |
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    ! o, a9 L( X! ~$ R- r4 N1 S. H
  115. 3 k2 B; g# ?1 k5 r+ ~
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")5 p% U9 f" x6 p, a7 k/ Q$ _

  117. . o/ l- H6 V+ E- I" G
  118.                 left = element.location['x']5 A* c1 _# m$ q) X

  119. ( A0 s  P+ R5 t8 E2 E
  120.                 top = element.location['y']
    ; i2 b: c" t3 V* q6 H

  121. 5 ?& [! o' Y% ?& z: N6 i* g0 C0 C5 s
  122.                 right = element.location['x'] + element.size['width']
    ( G" f; ^! \) t4 v/ s9 [

  123. 5 d$ G7 @/ v3 s3 U
  124.                 bottom = element.location['y'] + element.size['height']
    ( ?" p7 X+ ^; s* T+ m
  125. * q, l( E# Q4 P9 C5 M" s
  126.                
    9 G, J6 t+ J) D8 b% B  Q) j
  127. & D- K5 Q; [. K! G4 R
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    2 x9 q& }8 S/ m

  129. ( m, w, v6 \, j" X$ z) c& Q
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src"); e0 U* y% f+ E- M! d, i
  131. ' [" m' I% X7 H0 v1 y
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    # K+ {6 \% Y5 w# z% C  q4 |8 b( Y

  133. # C" }$ x$ W: A" O
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')1 @, ~; j% h" p, c

  135. , e" t6 {" M" i6 N
  136.                 image = get_file_content('/tmp/screenshot1.png')* |& Q' v2 a) x$ G! m: Y7 Y

  137. ) L; N) F0 N6 s1 D
  138.                 a = client.basicGeneral(image)
    2 E! F' E7 L0 F7 U% u' N- G

  139. 0 n7 j" u! a3 P% ^
  140.                 print a: O; G; M( C+ x/ n0 s7 q
  141. * A6 T6 M$ P1 X8 J' D8 }
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])( j( H* y2 _. ^* q6 k

  143. % J- U8 k5 e  U  w1 c, K9 p" p% t
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    7 H8 w2 v# V) y. \

  145. % W3 {. Y  ~2 r; e9 c! l5 Y
  146.                 yzm = re.sub(r'x',r'*',yzm)7 v3 N4 C* ~/ [- K$ _4 k5 e

  147. # Z, M" ?$ f5 U7 Y  \
  148.                 yzm = re.sub(r'X',r'*',yzm)
    4 U8 o5 o4 `1 T7 {. g- P* f

  149. * H% n' H" @$ }. Z4 L: w. b9 a$ ]# c6 S
  150.                 yzm = eval(yzm)
    5 e& l+ {' ?0 t
  151. + k. z& ?/ W$ M" b: Z% Y: }+ o
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    ( }9 Q. Q( L/ v, J# z; p' U

  153. - F' V/ i7 K5 G& }% N8 o' z
  154.                 print '验证码: ' + str(yzm)
    0 F" `& h; o5 {- [: g" ^

  155. ' e3 Z; y( `+ o/ p4 M4 o
  156.                 driver.find_element_by_name('answer').send_keys(yzm)4 K  h, ]- f: |
  157. 0 u3 \& |6 f5 e; K5 u5 C
  158.                 driver.find_element_by_name('submit').click()
    1 e8 j* J* h" v& e' b

  159. 9 R$ c! n/ z' S  D- O
  160.                 time.sleep(3)/ d7 d, b% j8 f4 G7 U* i# F; }
  161. ( K4 o5 C* q$ K: s! i/ f
  162.                 return 12 n5 d- x' R+ P& V
  163. 8 e, R) c8 z, @7 s+ N4 t& C; }
  164.         except Exception as e:* Y9 q" a& S! d( i
  165. 0 J& P1 V, e* C& R! s
  166.                 return 0
    # z  Y( @9 d2 i% H( h
  167. / }9 z6 d# x7 c0 m/ c# t- I( e1 t2 K
  168. def followbutton(driver):
    0 \& K" d( a+ w

  169. ) l# V$ H5 }2 i1 v
  170.         try:: H) c$ U9 b' b2 @8 k. n/ ?0 p

  171. ( B+ a/ h6 o! O' ^0 Y
  172.                 driver.switch_to_window(driver.window_handles[0])2 u1 r3 l/ v& }) ?0 [2 S

  173.   |$ n& h1 L, X  m/ u
  174.                 points = driver.find_element_by_id("currentpoints").text5 L2 D$ P# S8 J% `$ ~

  175. 5 ?, ?& _  f% h$ `7 @$ F; z' ^
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    7 y, Z: e  m# w( J3 ^8 |* _

  177. : ]$ l0 y& X( X- ^- M6 S+ Q% p
  178.                 driver.switch_to_window(driver.window_handles[1])
    2 c, n, `0 B) w7 K( g5 y

  179. & q2 j- ?& f$ {9 \. y0 e5 j  w
  180.                 VideoSource = ''.join(driver.page_source.split())
    : u" A6 g0 q, ]: ]; Q

  181. & b+ G6 W# T- a. V6 U
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:! ]$ O! h% r. J, r% ?

  183. + G0 C& n  y( d9 K# Y
  184.                         print VideoSource
    & `$ C: p& W* I5 E- h4 ~" f
  185. ( }: v5 S1 l% V9 l5 d
  186.                         driver.switch_to_window(driver.window_handles[0])* n  {- o2 `& k. R; u+ X

  187. 8 q9 p0 L1 H7 x0 `0 Q& \3 @
  188.                         print "Refresh..."' i; R3 M3 u0 E( ?# Y. B
  189. , I( c0 ?# v9 |
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    8 g* c1 u, T4 h) M% X, r
  191. . r1 q6 n- G# P  {" W: W
  192.                         time.sleep(1)
    + c( p& M3 j! r& C3 l5 E& w

  193. + i8 ]' o6 t2 g/ e- t5 B- o
  194.                 return points
    9 D$ n. G/ B6 y/ x4 k- @7 i; Z4 _- o# j) D
  195. " s( L; Z. z  j' i
  196.         except Exception as e:/ B1 o  ?* C# r0 r/ g+ P

  197. : K2 W. t( z! ?1 E4 ]% V
  198.                 return 0% D; X" `# d5 ^' Q$ _' V7 g9 C

  199. ! d, E4 a& k5 W7 p0 L
  200. for i in range(0,5000):4 e; t8 W  a  j- y

  201. 2 h( c& i  }; z' J; L* E  `$ C
  202.         try:% e% j5 B) U) w. L+ R1 \

  203. ! k0 ~$ @: y, P( u; ^( W: @6 }
  204.                 captcha = checkcaptcha(driver), d+ |# E' E: c7 }7 A. u( S5 e/ X

  205. 3 Y6 q5 V/ S' X6 V3 a6 A
  206.                 time.sleep(1)
    0 D% {4 T' y: d

  207. 9 V  ]- N' X! x+ U* H, h# z
  208.                 checkRefresh(driver)
    / t4 X" {0 T7 k) c2 k( m

  209. , A8 n7 O, ]0 P
  210.                 points = followbutton(driver)8 Z: U7 m6 u; ?! p3 s* o/ X
  211. 7 B9 t8 B+ D1 G  d+ w% A
  212.                 time.sleep(65)1 q" ~( [5 B* Q5 \1 W- M: _' m5 q
  213. ! t$ \3 w) t" o0 t& d1 n
  214.                 driver.switch_to_window(driver.window_handles[0])
    ) Y. z7 x, q8 q! B/ d

  215. : \) T, m0 t) J
  216.                 tmpp = driver.find_element_by_id("currentpoints").text- w' H7 ]/ f# h. M& `4 I/ h/ @. a

  217. 8 ~9 p/ V3 a& D& X1 c: v. j
  218.                 print "points: " + str(tmpp)# ^/ V8 C/ F! w( A4 J! M) r
  219. 1 @  E" i( W9 j0 W4 h
  220.                 if points == tmpp:% R  g4 O) Z. o& {

  221. 9 S4 k: N! m- Z+ t+ ]# N
  222.                         print "Refresh..."; V6 H7 t, q# P1 }0 Z# C# G
  223. 7 G$ `6 w, C0 V, s( L- u7 s  A
  224.                         driver.get("https://youlikehits.com/youtubenew2.php"): \6 t5 v/ ^! d- S! S( d
  225. % a. F. x% }' @- ]9 Y4 D! P
  226.                         time.sleep(5)
    / D6 h4 ]; u1 g. W

  227. 4 W1 k: e+ j) J* h# X, P3 J0 g) j
  228.         except Exception as e:+ g" s+ v# M! b. h( P, |/ Q

  229. 0 _3 k7 T! ^4 @7 W' {* t) U
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
      O" H* o9 X% J; i) O

  231. ) e& [+ Z+ R' r
  232.                 print 'error: ' + str(e)
    % e! `! l7 N; J/ `3 O
  233. ! m5 J' `' s2 n' a
  234. driver.quit()
    % e+ |7 E0 f2 c# p) Q% a
复制代码

8 E' ~4 O4 G: ^: f" T
4 G' T$ X( c8 [: r" `! l# ]- \8 H" r: Z8 t
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 8 |( s! W8 y1 J& J

2 s! d( ]) j0 a* z1 p8 a

评分

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

查看全部评分

相关帖子
回复

使用道具 举报

2

主题

25

广告币

80

积分

初级会员

积分
80

社区QQ达人

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

使用道具 举报

1

主题

32

广告币

102

积分

初级会员

积分
102

社区QQ达人

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

使用道具 举报

20

主题

36

广告币

255

积分

初级会员

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

使用道具 举报

2

主题

172

广告币

254

积分

初级会员

积分
254

社区QQ达人

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

使用道具 举报

9

主题

1047

广告币

1543

积分

高级会员

积分
1543

社区QQ达人

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

使用道具 举报

176

主题

1184

广告币

4252

积分

超级版主

积分
4252

社区QQ达人

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

点评

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

使用道具 举报

6

主题

303

广告币

310

积分

初级会员

积分
310
 楼主| 发表于 2018-10-19 21:57:02 来自手机 | 显示全部楼层
小白龙 发表于 2018-10-18 15:11/ q) i, _/ ?0 h, u$ a1 {
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击
: k4 |: s9 x) l9 F2 a
小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
3 K4 R( r: w' Z. f5 V: L0 Z) |" x# N9 P0 l4 Z3 ~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-28 20:56 , Processed in 0.084865 second(s), 27 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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