AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Lemft
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
' k: y  p+ g) }! m7 l  y+ A# w9 P  y/ f% V: x! M+ x

1 b! R9 v+ ]$ O& e* ?
  1. / d5 p% A% C( G6 ^
  2. # -*- coding: utf-8 -*-9 ?7 {! F8 J5 T/ k% @
  3. ! i0 \- @# C* f. S4 z! S# T
  4. from aip import AipOcr6 |' K) k" u  J$ _, r3 Y  X8 H
  5. $ n8 i/ ]0 K* {" [  D. M/ [
  6. from selenium import webdriver$ v5 S5 T& b0 J* s

  7. , j7 e# Y6 C3 C& D# Q1 E$ J
  8. import time  [% ]! u5 N  E9 k
  9. % R5 C) Q5 ^$ v$ R' C" j: V5 }# V9 o
  10. import random
    + Q' n: N; ?' A& A; R* u
  11. 7 `2 I; [& p/ r* W% ]
  12. import sys,re
    3 ~" X3 ^& s9 x) L& [1 q- e
  13. 8 U! |( F) H: j! b
  14. from PIL import Image, ImageDraw,ImageFont! F; ?2 }* D7 o( f" k9 |, z

  15. $ {7 c+ H# n, K, `
  16. """ 你的 APPID AK SK """
    ) E0 ?9 D2 S1 |3 A* A: Y1 g5 k3 D
  17. ; |7 Q# a0 b; C8 v, I
  18. APP_ID = 'xxx'
    ' o" f  B7 E. D. d
  19. 3 y: [: s) l' {6 K
  20. API_KEY = 'xxx'
    ) n1 J& }0 o4 |* L' o
  21. 2 I; @- }7 M$ D7 G# _) \
  22. SECRET_KEY = xxx'  f0 Y' l- O* l( u2 v
  23. % ~4 M( q' e8 q
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    4 ]+ {8 P5 o& t. g

  25. ( R1 n- l/ o+ l# l  q" o
  26. #PROXY = "127.0.0.1:8118"
    ; f" R  E" U0 W! l/ P, [

  27. + d6 |# g" a1 s! T3 \6 ^/ D) a
  28. chrome_options = webdriver.ChromeOptions()
    ! W% b( _" Q! l/ i6 x. T
  29. 5 K) x! ?4 K1 q+ L% y3 R. e& Z
  30. chrome_options.add_argument('--headless'). \) J- v8 x: o' B6 T' ?

  31. . Q& B8 ^7 @" Z: a$ l: W- g/ O
  32. chrome_options.add_argument('--disable-gpu')
    5 z. t9 |$ D6 T5 O5 T* c+ o

  33. : I$ g& S2 Y  j& Z
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    ( }: {9 j3 \- @/ s( R
  35. & v4 I/ e# ^: ?7 z/ F% |% r
  36. chrome_options.add_argument("--incognito")
    ' q! d9 J$ B+ r/ Q( q
  37. 6 c' h9 J/ o2 v. E+ T; o- G/ E
  38. chrome_options.add_argument('--ignore-certificate-errors')
    4 p. z# k& K) I; F
  39. , @, n  u& M. y$ Z: X
  40. # Win
    4 c1 v, ]2 B0 x8 T( J: y4 S

  41.   f3 O3 d( V3 K6 d3 H
  42. # chrome_options.add_argument("--log-level=3")
    $ ^* `1 S% `  G: z  k0 Z0 k
  43. 3 A2 \+ a& G) u* h
  44. # chrome_options.add_argument("--disable-logging")
    # C$ D. E* w2 L2 r7 s. `1 [
  45. : A% k2 n/ R! k+ N8 O- I
  46. # chrome_options.add_argument("--disable-logging")
    " ~; x' O* F1 e' B
  47. ' F/ t7 T% n9 `2 H! w
  48. #chrome_options.add_argument('--no-sandbox'). s8 S6 l  h% k& z2 L# G2 W. m+ F

  49. ( N6 s9 A( n+ [- ^+ M, D# ^
  50. """ 读取图片 """( i2 H5 q  B3 T9 t2 z2 h

  51. 0 I) Q8 h7 h! S# g2 V& v, R2 S
  52. def get_file_content(filePath):
      n" x7 ]7 ]7 H4 @) U6 r4 h4 i) o

  53. " ]9 E- u, _% R8 C/ h2 S7 e  t  z7 ~
  54. with open(filePath, 'rb') as fp:
    ; f" k! n6 F/ e: t6 ?. ]* Y. P! W

  55. 4 z, O) N; A! r( I5 U. u( u
  56. return fp.read()
    ; N3 k) ^  P6 m8 v' z
  57. & ~/ A/ n+ d# ]$ |
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    0 E1 {; `7 W+ E$ n! d7 h

  59. + }$ j1 r, ~4 e( |" w' l
  60. driver.set_window_size(1280, 727)8 z! T8 A- g. V9 d
  61. * }8 L# V# ^( V/ S" Y7 b- ?( f( T" s
  62. driver.get("https://youlikehits.com/")
    + Q1 ?$ r5 q  u6 [6 L0 ]

  63. . \  S# q; T+ u4 z% c0 ?4 c
  64. time.sleep(5)& u) y' o- Q% L
  65. . H  i$ W% e7 b3 i/ F
  66. driver.find_element_by_id("username").send_keys('11111') #user8 b2 H7 d# E# I" x/ c
  67. % t, u6 \* N7 S( x/ e
  68. driver.find_element_by_id("password").send_keys('111111') #password- k; M1 m# K; S& R6 O$ N6 `

  69. ' T8 n, M. G7 q5 O+ G8 c4 H( U
  70. driver.find_element_by_xpath("//input[@value='Login']").click()3 O: e" d# c, }
  71. 9 m" H1 S# S9 `" a9 L
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    3 q+ w( S) ?9 E/ K- N% X6 a+ b

  73. : x: t0 E" s5 j  F, D# @% q5 B
  74. time.sleep(1)  j7 ]' r( v- u
  75. $ t$ x% d# Z# x- f( h
  76. #Try Again# o6 v) z* o  b9 \5 b- Z

  77. ) L5 R4 |) u! Z6 W; i
  78. def checkRefresh(driver):
    $ q3 m) Y* a0 J) m" W
  79. 8 i* [9 P1 p8 F3 D
  80.         try:6 I8 @. `( O7 P/ y3 n/ [

  81. 8 {- n# A( H0 c; [9 L/ g1 j2 t
  82.                 Refresh = driver.find_element_by_id('loadmore')* u: y7 g; J' n  e, ~

  83. 4 B7 O/ I) Y9 |( z3 C
  84.                 Refresh.click()2 [. l( t" P( l; r( W
  85. & b0 o( P2 T% r) z/ }- M  N8 w4 S
  86.                 driver.set_window_size(1280, 727)
    . y$ v' S  ~5 }0 I$ k2 I

  87. 3 O" _' t, V& W- U
  88.         except Exception as e:
    7 m1 E+ Y/ i8 K
  89. ! T! {' P  M+ U, _, Q& ^8 M- T
  90.                 pass% ~& ~& _# X. D5 W2 y. J
  91. & p1 J4 D2 a/ v- i4 ^
  92. def checkcaptcha(driver):
    ! L1 Y+ f. m5 H; t1 t

  93. - C" P5 W2 T. n# z  Z1 l
  94.         try:, T' y* _' g& S
  95. 5 c" I/ V1 v0 l1 I
  96.                 captcha = driver.find_element_by_id('captcha')# ?- C- l7 o8 s. H7 j

  97. * L+ ^1 D: x6 L& @% ~2 S4 z8 {- O
  98.                 print driver.get_window_size()
    / S3 d9 [  ?0 e2 X: R$ I. q4 J* h

  99. + Q' e# g2 P" a. i! V7 N
  100.                 time.sleep(2)
    7 ]  r& L- b6 w' V4 j+ D
  101. 0 }2 V4 H3 w- t+ _
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    - {6 S5 d) n# w; H
  103. : K/ C6 U9 G; C  ~3 E! X5 n! D  u
  104.                 im = Image.open('/tmp/screenshot.png')
    8 o$ w9 ]3 g7 a

  105. / Q$ G! e! q/ g% n% [* }
  106.                 #取消headless模式
    ; O' C8 }5 V( y! I2 S) {8 t1 u
  107. ' x6 j+ f/ b$ m  f
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)* W: H: S8 [3 S0 Q' |4 [( k
  109. 8 C6 S- U- Z. n0 b- l, ^
  110.                
      r; B9 P# F# M, A
  111. / j6 ]1 R' F4 J9 H# a
  112.                 #开启headless模式
    2 I, I: j9 Z( D, ~

  113. 1 Y8 q. {  F6 u$ o
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)9 K2 D! U1 k; a5 Z8 l0 j
  115. 1 F. z6 U) ~& c( @
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")6 r$ L, T2 f5 R) H3 h# d

  117. : t$ V& Z, U: Z0 h5 v" J) @
  118.                 left = element.location['x']5 c" n, j/ }4 r: G2 a5 U0 P1 y
  119. , E2 a+ l" F* t5 W3 i  B# A
  120.                 top = element.location['y']
    ( W# o# Y! j- {! a/ a2 g3 W& p
  121. " ^1 O0 I: m5 `/ k, _
  122.                 right = element.location['x'] + element.size['width']
    6 g( C3 F' W5 q5 v* M; n4 k
  123. 8 |) w; P3 @" a! `1 X: z1 j  m, x
  124.                 bottom = element.location['y'] + element.size['height']# v0 N; z, y* e: \$ m
  125. 0 j& i+ \( C# G# ^$ R
  126.                
    . x9 \7 q+ [/ Z, I! ?$ b2 Z

  127.   U: C/ M( |# B8 P- \
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    7 f, l3 c2 n8 e+ p) y# A% R( K" ]( A

  129. ' r( ?7 L4 u, p4 g
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")0 J. J  f& d4 A% B& ?5 D
  131. % x8 K4 h( p1 A1 P6 N" E
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")% P8 n, ^6 c, f3 c5 o) g- {
  133. ' c. ]/ a; i" G6 n
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    * V5 C6 f( ~8 V3 O# a* y! ~, d
  135. / ^3 s5 x+ Q1 ^( d) }( N
  136.                 image = get_file_content('/tmp/screenshot1.png'). [& j5 s) h" }+ u; Z6 F3 R- c
  137. ' y3 x3 q/ Q5 g
  138.                 a = client.basicGeneral(image)9 k/ q4 E: i- I; G0 N0 l+ J  i
  139. ! c* O1 N7 }+ J9 c3 {; s2 \
  140.                 print a
    : ~" @) L/ r: j# c

  141.   U( c+ _$ t$ \0 m, a* O
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    + V9 B9 O4 @* @. e

  143. 0 w9 H' A! H7 r6 O
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    : ]& {; a- g9 ]2 l& j* o! y4 \) v/ {
  145. / E4 T* z' f* N
  146.                 yzm = re.sub(r'x',r'*',yzm)% [; H% Q5 W! G, j) _
  147. 8 r) j8 `/ l- j- V; h& w
  148.                 yzm = re.sub(r'X',r'*',yzm)# D% Z" T$ J8 ^7 T7 f0 C7 n" ?
  149. : k9 |' |5 r; O) A- I3 K0 d8 F
  150.                 yzm = eval(yzm)1 c) }% c% {3 l: V! G, k) n9 v
  151. , ~/ s* b1 v3 ^$ O9 @: P
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    $ D/ }7 S7 l% W: [1 |3 |
  153. 7 o/ @) S2 l$ Q. A# {* _
  154.                 print '验证码: ' + str(yzm)
    : V7 ^- B2 M5 k/ A( P6 @1 C1 e

  155. . c) C% v9 c" v0 \
  156.                 driver.find_element_by_name('answer').send_keys(yzm)" L; z7 n/ S6 B3 P3 x) H+ l
  157. % M2 I( D# ?8 Y& U% \: E$ J
  158.                 driver.find_element_by_name('submit').click()
    ' f" V' I% H* w' U% i2 {- ~5 L, S
  159. : w$ I* q- c: N& O9 A3 ?
  160.                 time.sleep(3)7 `, a" R8 k0 I8 s4 r2 l

  161. . `6 B, C1 a6 C- S
  162.                 return 1* ], W) k4 G1 w$ F1 Y, d

  163. 8 g/ r. q+ i  Z- e' u
  164.         except Exception as e:
    8 [; t5 p' ~2 R& H7 Q
  165. * \2 d8 N3 {0 n+ y6 a. P
  166.                 return 0
    " j1 v8 c: D4 g8 Q! K' E

  167. ! J: R$ a( Z9 _3 O2 S+ [
  168. def followbutton(driver):* y, f% n, n1 b2 ]( ?

  169. % O" t, ]$ T  Z6 v1 K
  170.         try:
    * I% G3 y* L2 P& Z/ H
  171. 7 f  v! M7 F/ Q, L- s
  172.                 driver.switch_to_window(driver.window_handles[0])2 ]- E8 a) p4 ^: R3 Q3 `

  173. 8 O# U' z/ d" m! D
  174.                 points = driver.find_element_by_id("currentpoints").text
    . I3 P% x! D9 `# {9 p7 f4 N: D6 a

  175. ) Q8 Q# ]4 K" T2 S0 k3 v
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()& P. a! x! E3 G0 C0 h: H

  177. 9 a+ A8 ]8 Q/ ^3 m+ @  \0 A
  178.                 driver.switch_to_window(driver.window_handles[1])0 P9 ]: p7 H% {. K; D4 I6 E0 D
  179. 0 ?2 H' ?; W( d! z( [& m
  180.                 VideoSource = ''.join(driver.page_source.split())
    . f0 y# t2 M3 U+ J% W
  181. ! B( {& z8 G7 o7 G! K) W
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:# u3 T% {, o) j6 F: G
  183. $ m# [" e" e: b. `9 E* l
  184.                         print VideoSource
    3 t1 H2 @  ?, O! X3 x" i& T

  185. : t9 l8 @( q5 A. t) Z3 @3 `
  186.                         driver.switch_to_window(driver.window_handles[0])
    : _9 h' C* r8 ]. }  I) r) @
  187. , j, Z7 T7 o' k2 s
  188.                         print "Refresh..."
    ' e& ^9 \4 ?+ E' I+ [4 \
  189. 6 T5 U+ C  I+ P
  190.                         driver.get("https://youlikehits.com/youtubenew2.php"): J% r1 f6 L0 W7 u! y
  191. 0 n: f4 [2 x; A0 S
  192.                         time.sleep(1)0 Z) t: _, A6 f4 K+ r
  193. 7 S' A) ^5 g8 f
  194.                 return points
    & u! E9 A/ q) K1 {9 t0 g0 ^4 z; r
  195. - s" z! R1 O% u2 y  i: B
  196.         except Exception as e:8 \" E% U, v! }: ^* o* y
  197. ! b; c5 j( Q' f
  198.                 return 0# R0 k! c# q4 y; s

  199. , e" s' {1 z/ ?. i2 k. `) ^
  200. for i in range(0,5000):
    4 ]8 x# O# a5 a, i! ]1 G3 P( X% x- G7 ~
  201. ' G/ c; i( H8 e4 Z) ~0 A1 E4 P
  202.         try:
    % I( D3 \! r% D4 D& d* M

  203. 0 l- m/ Y# g4 v# \- _
  204.                 captcha = checkcaptcha(driver)
    3 m3 @9 T3 J$ F8 E* E
  205. * j6 P- n. M5 M2 t2 ]( Y
  206.                 time.sleep(1)
      r2 L; D3 J, K+ H4 ~9 o  R
  207. # C4 V+ D; e+ T
  208.                 checkRefresh(driver), L9 ]) o6 u$ d

  209. $ K) k& ]  k1 k( A- r
  210.                 points = followbutton(driver)$ c( o  B# @" ^
  211. 3 G, J. o: J& u/ U. |
  212.                 time.sleep(65)
    * q; q4 G! b9 b& U3 p* o

  213. , u4 f1 b6 u  y7 n( `7 i
  214.                 driver.switch_to_window(driver.window_handles[0])
    6 S6 a9 z) c) F8 [3 |
  215.   B% W' K  R& J. V1 g
  216.                 tmpp = driver.find_element_by_id("currentpoints").text! C- T% }4 G' y9 A! H& x! t1 W

  217. 3 [/ S# f* ]* L6 a
  218.                 print "points: " + str(tmpp)$ m0 _) N7 t- I) Z$ u
  219. ( a6 d  @8 |, \- y3 V+ W
  220.                 if points == tmpp:7 o+ `; g6 w; d; a
  221. 3 o( [7 ~& f7 @" P, p6 w& T8 I4 {
  222.                         print "Refresh..."
    3 x5 v8 Z% K% p. s
  223. , U( V' j, U$ }- a8 h
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    : I& |: [3 e$ y
  225. 5 h9 P/ z: P1 R( d; {2 S( d
  226.                         time.sleep(5)
    ( g# a) _5 p8 C9 k2 h

  227. 9 G7 {3 c, p5 u) c8 b
  228.         except Exception as e:
    # d. v, f7 e' W8 ^, @$ W! g

  229. ! d6 ]$ O" @, }/ E( l
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")* `* o$ t5 P6 v
  231. 1 E- g0 `5 p5 P& g
  232.                 print 'error: ' + str(e)9 l7 X0 Y2 ?( h) j- z; x8 `
  233. $ q/ U2 |4 v  ?) F
  234. driver.quit()
    - C0 w( H9 K# Y9 t) ^- |8 D
复制代码

) Y, A3 N1 A4 h& h& A- x# V) B/ L; U. H7 l

( R! g4 j" T6 b7 E/ W 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
: y2 z8 f' P/ r8 @8 ?2 z# R) A
7 q0 ?& h' h: _

评分

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

主题

1138

广告币

4199

积分

超级版主

Rank: 8Rank: 8

积分
4199

社区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( H  y: R9 G: v& p: u
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击
! B$ Z& X$ \6 E7 G8 A$ M) h4 I; [
小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
& n4 Q( c( o# e9 \5 L# c  N1 r2 c  I# U9 _8 c0 W5 G& y) f8 {
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-16 14:13 , Processed in 0.061464 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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