AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条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 + ADVERTCN
7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款Facebook 批量上广告尤里改 - FB 稳定投放
免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户
FB资源,账单户,分享户,国内一手FB企业户,TT老户,GG老户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
FB虚拟卡⚡️消费越多返现越多【找量】BA独家Nutra单找量虚拟FB卡 ⚡️ 透明条件 国内外持牌,虚拟信用卡和收付款
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10062|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Lemft
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
6 P7 c" q# Z1 G+ W4 D1 e7 ^6 x; }: a5 H9 [/ X7 E5 Q
3 o; g4 o1 R$ Y6 q/ h
  1. 5 g+ I' l; g  W& t( d" P& F; y4 g
  2. # -*- coding: utf-8 -*-
    9 H- Q$ g2 |+ ^# }+ a+ d
  3. 5 P- W: J  [" v* m( A. ^" M
  4. from aip import AipOcr  U/ [' H( o, c" h$ i3 q+ f) ~4 Y
  5. 8 e* [, U0 y" C4 @0 K, ~& s7 d
  6. from selenium import webdriver2 @  P7 Z+ Y" g, h! N/ E
  7. 5 V$ J" H- _) [" k1 d1 Y
  8. import time
    " W% |7 k* B# n1 h
  9. . |0 C6 W( N1 i6 Z5 y- F: _
  10. import random
    5 k+ l  M0 y  ^- C
  11. + r' }: v0 ?( [5 J( b5 f
  12. import sys,re
    . L9 d: V7 E$ N7 c' i
  13. " N( {" j3 h6 l- q2 ~1 |
  14. from PIL import Image, ImageDraw,ImageFont( G2 n: Z  D) G2 y
  15. 3 ]% ^& f  A% Z, g
  16. """ 你的 APPID AK SK """
    5 k6 K) |9 x6 p  G% I) c

  17. 6 d5 r. b+ y- Y
  18. APP_ID = 'xxx'
    , m" s  ?$ k( {
  19. 6 M% i" \" F4 d
  20. API_KEY = 'xxx'/ l: L  K" e4 `, ^" Z) d3 D
  21. 6 C: c! ?/ F' ~+ o9 m
  22. SECRET_KEY = xxx'
      d6 n; R+ C5 {
  23. & p( B6 t) t/ \' A* d9 z, Z
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    2 T' e& ~! e# O- I

  25. - ?- ^' g% j3 S) ^- Z0 V& A
  26. #PROXY = "127.0.0.1:8118"; p1 I) }: Q2 i% L$ X$ [' _' V

  27. 9 N3 @3 s* W# p; q
  28. chrome_options = webdriver.ChromeOptions()* H; B  I% }# I& x3 H& D: |) {
  29. ' h8 h" F) I4 k: r  v( M$ y
  30. chrome_options.add_argument('--headless')) {8 n( N5 C6 o7 v: e4 V$ a
  31. 3 a3 L9 {1 n- P
  32. chrome_options.add_argument('--disable-gpu')
    0 B( I  Q1 H. e: A

  33. 1 H, R7 _$ v5 ^4 Q$ {* c
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)0 l! U7 a# ]6 M5 F+ q' v' ~
  35. 7 i* Y9 _8 I$ }1 H
  36. chrome_options.add_argument("--incognito")
    3 v1 e. h& n! ]) ]( r

  37. 9 |; B2 F1 u) y" J8 Q: h
  38. chrome_options.add_argument('--ignore-certificate-errors')# U0 \& A: q3 S7 e# q  h5 Y
  39. ; m* R( B- _; X; H
  40. # Win! U( \8 @+ `& |+ z9 |

  41. : ^/ l5 `  }4 y2 Y% P
  42. # chrome_options.add_argument("--log-level=3")
    ; H5 T" z" [4 ]3 p

  43. ) e: `9 b. t4 m# \
  44. # chrome_options.add_argument("--disable-logging")
      `* `2 f  x* Y! ]6 I+ O
  45. 1 e. a" u+ V) h7 g$ n7 O4 m
  46. # chrome_options.add_argument("--disable-logging")
    , ?! H* h) S. r$ z! v6 ?4 E" h

  47. . p1 t6 r3 l. I' ?: f* c8 {% i2 E$ |
  48. #chrome_options.add_argument('--no-sandbox')
    - |" ^5 g3 D. H2 \$ K3 H% b

  49. / B- e) _8 k4 T+ t+ V
  50. """ 读取图片 """8 r+ G* I% O5 _$ B9 f

  51. . \5 }5 E! c: ~8 K, P2 `' ]- k
  52. def get_file_content(filePath):5 ?0 A5 z% u/ Y  L' P8 M

  53. * \- l9 A2 z2 U* I0 c1 |
  54. with open(filePath, 'rb') as fp:
    " u4 t$ c, l( X& Q0 F) _
  55. 0 m! p" c+ Z" W; |: `
  56. return fp.read()
    3 |" {$ B0 o0 {8 \/ @
  57. 0 U/ K0 H. i: R- E0 v
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    , O+ d5 x2 P& x: L# w- q
  59. ' x2 d4 P* c. X! G6 Z$ U% O
  60. driver.set_window_size(1280, 727)
    3 K- L7 P) M& t9 w6 ?
  61. ' A" \" y" P8 N4 b7 u5 S4 i
  62. driver.get("https://youlikehits.com/")
    0 ^$ @6 |8 q) i% ~' H
  63. / \7 l& m- I, i, ?5 ~: ]
  64. time.sleep(5)7 R: c- c/ C' U6 p
  65. - ?' E& r" @6 q( t5 v
  66. driver.find_element_by_id("username").send_keys('11111') #user
    * P& B4 X3 A( c" O- o# Q( a
  67. . N9 u  w7 v9 I' t3 d9 P" d
  68. driver.find_element_by_id("password").send_keys('111111') #password& ^8 e/ V) p; \% o( z- j" }

  69. 8 ?0 T4 |3 W6 x- J+ i' c, `
  70. driver.find_element_by_xpath("//input[@value='Login']").click()9 p; h8 l+ S, T

  71. . j, @6 _! C, ~7 J
  72. driver.get("https://youlikehits.com/youtubenew2.php")+ r4 N7 E/ }8 U" U* t9 L$ D
  73. ! Y9 H* e8 ~' B" Q
  74. time.sleep(1)
    / C& J( M' D7 `2 K. X  ~, D
  75. # w5 @# o. p& Q$ L- n9 i0 i) ~" n
  76. #Try Again
    8 p$ H3 r) t0 G. A5 T( f8 s
  77. 8 _- E/ B9 ^* j% y1 Q& F( U+ W
  78. def checkRefresh(driver):
    + G% l# f) i! e$ v  U* D( ^

  79. 0 |, V- b; s" F! P& b4 Y/ h5 P
  80.         try:
    # p  H* Y6 J" z) C4 h

  81. 4 @- y8 i4 ?4 S
  82.                 Refresh = driver.find_element_by_id('loadmore')
    / w* C& y  N& V* @9 x

  83. $ l# T$ E! [; y: L5 s7 U" o, f+ f
  84.                 Refresh.click()& S$ {1 n  z- W; b# W: J. i% ~

  85. + E2 q& k5 u) K; ]' k0 X, B1 T0 _7 c
  86.                 driver.set_window_size(1280, 727)8 w9 H' `) Y: T( {( q# W

  87. * \& h4 N  a( o& ~
  88.         except Exception as e:
    ( R& G3 C) V5 `" t
  89. 3 p/ d  B5 F  w
  90.                 pass
    4 L  g2 a3 w( R0 s  K! \6 ?

  91. 7 b$ J0 W0 ?) c6 f
  92. def checkcaptcha(driver):& C+ |3 ?9 ^/ A( g
  93. , T, L% v* f: P: X; I5 n; b% V
  94.         try:
    ( w' \  P/ r6 T0 l6 [

  95. ( X  i9 X" g+ L  `
  96.                 captcha = driver.find_element_by_id('captcha')
    9 I# K3 d/ P( H4 t0 T- H! I

  97. - ?2 C4 B; f- z) M
  98.                 print driver.get_window_size()
    . K1 _4 ]! i6 a" Q- ?

  99. * j$ J: M" {% L" i
  100.                 time.sleep(2)
    7 V# v1 D# A; Q/ w
  101. - F+ Y  q; [9 \) z7 x+ m
  102.                 driver.save_screenshot('/tmp/screenshot.png')! i3 F; T; f( o9 s6 R# A) J: z

  103. 2 `! f' Z9 y6 Y2 o, [
  104.                 im = Image.open('/tmp/screenshot.png')1 O9 F: U5 t( ?1 C/ ]
  105. # M) a  @+ R9 l" [* |
  106.                 #取消headless模式  U/ \/ s3 X8 W) ^* S1 g
  107. 2 [) ?; O( d2 n+ v0 E" Z/ V, v
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)" X6 s; r: L1 K* ]$ V  X! H
  109. 3 z% G7 s0 R- N2 i/ B8 ?
  110.                
    ) _/ _+ N; u" L5 E% S; a* j. O3 n
  111. 9 S2 o$ R% K  ?, I
  112.                 #开启headless模式8 [0 f" C( q! {3 L; }
  113. , v! s2 ?1 y' T/ v! e$ x8 m8 O
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)2 O) s# z& [" r
  115. * b  m$ h1 H0 g! }/ C
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    3 ?& E& Y6 T5 j# N" p
  117. * g9 y1 v0 H4 P2 Y
  118.                 left = element.location['x']( E. o6 q; I6 R5 `, ^# @7 n
  119. 6 h4 u  i- l6 A/ t. I, g5 |# O
  120.                 top = element.location['y']
    ( a7 u( y, E# D( K
  121. $ ?) r8 ]: h  Q
  122.                 right = element.location['x'] + element.size['width']
    + a+ J6 E8 h$ s7 ?0 \$ L

  123. 6 ^( A6 x- D" U4 \2 [$ ?3 L
  124.                 bottom = element.location['y'] + element.size['height']
    + J8 e- _. w' B
  125. ' R0 y9 N1 g$ a" c  P
  126.                
    + e& }4 v: Y* N% i
  127. 1 V5 e$ c) z$ |' N7 r) o
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    ( e4 A+ p$ w$ Y

  129. 8 J7 `9 c. d# X+ ^
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")' c' {2 g3 c2 p) G2 \- |' G) {
  131. + l* s( u; X9 F* Q5 j9 m: H% X8 `
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    " L4 N) l1 v& }( p' K: K

  133. . n) M5 F/ |  X/ Y8 b3 u
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    " b! l, ]' X6 f

  135. , z: _' F. L. c& m$ Q/ O6 R! [- X2 l" z
  136.                 image = get_file_content('/tmp/screenshot1.png')
    7 o2 V' i% G, q

  137. ! p  n  S: T3 O" Y, f6 _
  138.                 a = client.basicGeneral(image)( A4 P# b8 {; f0 T

  139. . M- A0 r4 L8 p/ C7 t
  140.                 print a
    & n- n& \* ^" u' L; v+ @7 B
  141. 1 i+ T# s5 @8 @- u
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    ) X& B1 s% b- ~5 N' V- t

  143. ' T0 @0 o2 ~7 a
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)- g" B7 w6 `1 o8 n! t

  145. : @7 p( g9 Y# Y. E2 p  G# }
  146.                 yzm = re.sub(r'x',r'*',yzm)1 q+ B) ]; b+ b# Q2 f2 q6 Z+ \! h# f

  147. / M' F+ r  r# u( A3 O/ z) k: [
  148.                 yzm = re.sub(r'X',r'*',yzm)
    # s9 C' }" g( g7 k0 n$ X  M1 E2 U
  149. 3 j; e1 ]/ S' h. S
  150.                 yzm = eval(yzm)
    . }2 O  d6 C: C: n  N

  151. % R% Z! w: x: P* y. H6 M3 b( b
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))4 Y+ i2 l, q; n, s( X
  153. ; w+ D& ]0 w9 e5 ~8 E; e2 w
  154.                 print '验证码: ' + str(yzm)0 ~6 H3 \' @* B6 `) d
  155. 1 K/ p) e. u9 \' C) N" `8 |
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    " {; O* M0 E6 _3 L/ G5 i3 Y! o7 S

  157. 5 J. @( M7 F/ }5 d2 K
  158.                 driver.find_element_by_name('submit').click()
    " _' l9 r4 |4 G' _8 v+ [* ^+ M

  159. . |/ v$ G% z4 M2 f' D! a7 U
  160.                 time.sleep(3)
    ( j; b; P* z% n+ Q4 q8 C

  161. ; ~" s- [8 N, v  M- P- C
  162.                 return 1
    % h# w/ v7 d3 N- t! a" ]3 v0 s. V, ~
  163. 0 l# r7 `7 O$ F
  164.         except Exception as e:0 D! {1 C7 N7 J" V3 Q. C

  165. : Q) G8 C1 J; S' I0 s& T  d+ X" n1 ^0 g
  166.                 return 0$ r- P2 H; H9 O2 f$ s2 N( _

  167. $ P: ~; ~7 S' \1 Q6 G7 |9 D  r
  168. def followbutton(driver):/ B+ D" w* Q3 X- l) q  |

  169. 5 R; c8 e2 n, s( |# S
  170.         try:
    ' ?) n5 n9 d: k! U$ |  E+ H

  171. . z7 t) K  W: X0 C0 X
  172.                 driver.switch_to_window(driver.window_handles[0])4 O( p% V  u/ Q. \+ b6 U# ?3 N
  173. 2 x- I: V+ D, j7 x1 X6 Z2 b4 c
  174.                 points = driver.find_element_by_id("currentpoints").text
    . P# C) `% j% s8 J+ n' [
  175. 0 Q6 y$ v1 d* h' R0 w+ A2 u% p
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()7 ^! N& }$ r6 y4 p% |& A5 r% L
  177. 1 p9 U; [; k- R4 K: w5 N. N
  178.                 driver.switch_to_window(driver.window_handles[1])
    ; X7 W1 Q  b6 s) X' M
  179. ' w# b2 E0 {5 _! i4 k2 ?8 x7 |+ H# n% Z
  180.                 VideoSource = ''.join(driver.page_source.split())# S) ^7 Z- t) j' P& u; ]9 O

  181. * B, Z( s! ?$ l" L0 |7 r/ Q
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    & g0 \8 o" }; B0 o* \: V' C8 I
  183. & ~* s7 D* b( X* u# D6 H! P
  184.                         print VideoSource
    4 W; b' O# k: E$ o3 s8 l- L
  185. , p- ^. O3 ?6 j) ^: ?: i& G
  186.                         driver.switch_to_window(driver.window_handles[0]), I7 y4 [* S2 e8 Y3 U* z& l
  187. $ o* D* D1 _- b; q
  188.                         print "Refresh..."& g) g0 C9 S  `2 Z
  189. % Y9 Z: w$ ~& _- m) @3 b  r( D
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")9 u$ I" C3 B( u1 @6 T
  191. ; }: }! i. x, n' I5 X# p
  192.                         time.sleep(1)
    0 j2 W; C! \& g* t6 y
  193. " \6 L/ v' [5 a
  194.                 return points) ]! X5 }% m) @! G9 @
  195. $ s* T9 x( T9 U( b: |
  196.         except Exception as e:8 s$ ~4 I3 Q' b4 X) [2 x% G

  197. 2 S! }' F( v- g( ?( a
  198.                 return 0
    4 O! `2 _# d5 V( q
  199. 8 G3 A8 |* p/ G" X& z% J- ]) q
  200. for i in range(0,5000):
    2 N, f: @0 Q; Z, S2 f
  201. : _8 W" `+ V) R& X: c+ m" }
  202.         try:
    1 {, c& D9 l! I" ~4 k& F( A6 r

  203. , c* U. j* e0 F! F- r6 x
  204.                 captcha = checkcaptcha(driver)* e+ q2 W# Z4 e( o% `

  205. ; S, L6 r/ s3 |
  206.                 time.sleep(1)
    6 ]; z+ r2 {1 t
  207. & ]" @" t, w; }, e1 `& r1 n; ^
  208.                 checkRefresh(driver)/ `' Z3 {  i0 {/ A0 x- ^  O
  209. * }1 M' |- w" V, ?
  210.                 points = followbutton(driver)1 B3 q1 S) n7 \( \" d

  211. . y& W% R  Y4 I4 a
  212.                 time.sleep(65)
    7 w2 q# F& N6 T. q* Z

  213. 9 J$ Q8 {; M! N1 o3 l
  214.                 driver.switch_to_window(driver.window_handles[0])
    + }8 p- i0 U3 C: e
  215. + v7 ^  ]$ ]: `1 h( I$ ?! C
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    " c; D! [5 T4 N
  217. " @  f4 X0 i0 Z$ k! N( _% E5 a7 Y
  218.                 print "points: " + str(tmpp)
    ) ~6 [" n3 @2 \8 {- |, s

  219. " q- W8 U) i1 x# |" O
  220.                 if points == tmpp:
    $ \! v; f8 l& y1 k& F( D) a
  221. ) }; L1 R6 a* G3 Q
  222.                         print "Refresh..."0 y8 }' L0 s$ H0 u2 o
  223. + _. m  P' n! _9 @
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    9 m# c" P" ~) W

  225. 6 s5 r7 y6 [) v
  226.                         time.sleep(5)8 e/ S1 r8 M  F, C' R+ U* e
  227. , k4 f$ w* q) x7 O* k: ^% o' T9 b, z
  228.         except Exception as e:8 U9 ~; w9 \# u" e0 X6 u# H

  229. 2 j+ t# j  \- c# `
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")# p0 y2 j1 K2 r3 m# Z9 a

  231. & P9 M7 S* W& ]* V) w$ V
  232.                 print 'error: ' + str(e)% j- W2 `! D* y/ a
  233. ) z2 r0 U7 s2 W
  234. driver.quit()
    1 y5 k0 G9 j+ y- W/ X
复制代码
9 r( j  k. n* h/ M2 f
' O( x+ F, f! a* O  _& k& a

' \* Y" m# g" Q/ U 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 ) p/ t1 F' n2 q2 u, r. ]

# D) C8 U# t9 B6 u7 S

评分

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

主题

1134

广告币

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:11
- M% z! P, j2 g; X& ~用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

1 h; t% N% q& u$ `* g! b小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
. A- S% E: {2 i1 z2 h( c, o/ q" H2 Z: e% Z! \; n9 V
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-27 06:53 , Processed in 0.051848 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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