找回密码
 立即注册

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老户
海外CL企业户源头最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审GG,FB,TK, 欧美源头, 欢迎合作❤️
FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇⚡️Spend.net — 美元卡仅需$0⚡️✔Taboola海外户
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10351|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
. q& |7 m* t  l% q; B+ Z! r6 C) p7 V, i* m, k
; Q! `5 D, L' u
  1. $ ~; w$ B$ J8 k" v
  2. # -*- coding: utf-8 -*-
    % P% i% V! n" u9 S, t

  3. ' F) H- X/ F' D! J% N. N2 c8 u3 m: F
  4. from aip import AipOcr
    2 K& r/ t+ K$ z4 f) @" C7 d) E0 X
  5. / d; R& X, |2 f$ J( k3 \
  6. from selenium import webdriver
    0 C3 i0 ?" U, _, j

  7. $ P& q! Z3 l2 @/ U2 w6 Z$ _
  8. import time
    0 O* J+ ~( |% U
  9. - G) E6 N/ A1 }6 l# p, a' S6 m3 ?7 n
  10. import random+ M$ u* g0 J9 F7 X- N

  11. , @* R3 ]( L7 M" l- ?5 C
  12. import sys,re
      @! i1 J  p7 Y. o# \8 H

  13. ) P9 k4 U4 c% H5 P. {
  14. from PIL import Image, ImageDraw,ImageFont5 Q& U; l& X, S) _& Q( q$ f

  15. / y: p) l$ t, P2 h4 W& F
  16. """ 你的 APPID AK SK """9 P! i! g" G+ ~, x6 E  D% V9 Q& m
  17. ) Q4 a1 f5 \( b) o2 T* H
  18. APP_ID = 'xxx'
    $ k# k6 }9 A* H  \  X4 s# W- }  u

  19. ; x. d+ ~* D. U" W7 m) G9 Q
  20. API_KEY = 'xxx'
    3 t5 Z7 G( }  H
  21. 5 a. g: D9 I- ?. t
  22. SECRET_KEY = xxx'6 z; ^! q# n5 L: o# g: u5 o& _* j8 R
  23. ) D' @. X7 \6 C$ J" k% i
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)& ]9 S, Y2 q6 |. u- e$ O
  25. . F+ }6 z% _2 T0 V
  26. #PROXY = "127.0.0.1:8118"
    9 h. y9 F* j* C4 R/ B9 E# u

  27. % ]+ C, R7 L$ S# R8 T* c- j+ w
  28. chrome_options = webdriver.ChromeOptions()- W5 v. m1 B( y) g; B: s
  29. * E  J) f( ~) n, O1 y) l
  30. chrome_options.add_argument('--headless')5 _4 [) c. e. z, n9 z

  31. + O7 k; O% d! b8 I* ^
  32. chrome_options.add_argument('--disable-gpu')0 |/ Z, X  k) v, |' |) p

  33. ( F. s1 Z, E( F( m) W
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY). e* U; k$ H- n* Z
  35. * w6 Y+ _* k, F- s8 e
  36. chrome_options.add_argument("--incognito")
    $ z4 o& [* ~8 p/ k' V: c1 b
  37. ; v' G# \' K4 z; J" V" y
  38. chrome_options.add_argument('--ignore-certificate-errors'); ~& ^9 D1 T/ o5 N
  39. 8 i$ J: q9 I# F
  40. # Win
    $ M( S2 ^( V" y$ K* J' h
  41. ' _) }4 l/ S% _9 n
  42. # chrome_options.add_argument("--log-level=3")
    : F: l" Q" s% a5 _8 M( ?3 L
  43. - o. x" u& ~0 S" I- Y9 C7 g
  44. # chrome_options.add_argument("--disable-logging")+ _# F. f! s% `) w  r$ I! ?) r
  45. ) T) [& Z: A- K3 M' \
  46. # chrome_options.add_argument("--disable-logging")8 H6 o: n( L5 @

  47. # m6 M; b& C! v+ d5 z0 F, c
  48. #chrome_options.add_argument('--no-sandbox')
    2 o4 F& A5 T$ B& ?* ^- I, ~& j
  49. 7 ?3 L% Z) K: Z, p0 s! k
  50. """ 读取图片 """
    0 E* N0 m4 g5 s- `' X

  51. 1 F* i' F* W) o" E; N& N
  52. def get_file_content(filePath):, k+ X" e% R+ F' F  j/ q4 G) e+ V

  53. $ D& N" ^3 Z" X9 z" D4 ~
  54. with open(filePath, 'rb') as fp:. G7 N9 u2 y% d1 q- i+ Q

  55. % V9 @# K$ F' H2 j# [' h, ]- J
  56. return fp.read()
    : n! c1 R2 N1 M: A( o# w$ i2 A

  57. 0 Y8 }+ W' x: L% m6 d
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)) s; s9 ], h) a; ~7 d
  59. + ~" _# i+ q( f" F( U
  60. driver.set_window_size(1280, 727)
    & K4 z  J. x8 l1 I! W$ f1 D
  61. 9 J+ p/ p  u8 i9 F
  62. driver.get("https://youlikehits.com/")* S' }9 ~6 D% v% A& p

  63. 4 R) ?* N. ]: t+ Q9 T& x# u& C
  64. time.sleep(5)
    5 S, a) L7 v0 `6 G1 G5 [
  65. - ?8 {& X$ Q% `# t# H
  66. driver.find_element_by_id("username").send_keys('11111') #user! \& e% h& v" ?0 h5 W

  67.   \5 w! G# X: }" H. y7 \
  68. driver.find_element_by_id("password").send_keys('111111') #password
    ! Q" \3 V2 S  C/ V
  69. & M- g$ W& I. N& c6 y/ N
  70. driver.find_element_by_xpath("//input[@value='Login']").click()  l  W3 H1 |4 }1 b. k* W

  71. : Z  B+ L! O) }- ?- B  k
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    2 g6 x0 Q" n5 _' h5 i

  73. , d7 g) U& B* Y3 P5 ?9 c( f% y
  74. time.sleep(1): x4 m3 x: b  w# d  v/ q9 ]
  75. ( }7 Z' m: F. }5 Y3 H
  76. #Try Again
    & v8 m) ]  V0 d% c/ x! Z
  77. - C" O6 V# q- _) r3 W$ t
  78. def checkRefresh(driver):) p3 k4 s- v- k( X# Q1 K! L

  79. * g: H6 i/ x# o9 J; W" V
  80.         try:8 b3 c! I  e' y) k

  81. 7 A+ M4 T- Q3 S
  82.                 Refresh = driver.find_element_by_id('loadmore')
    0 e' V* Q+ y2 S# u+ ?9 J5 @7 c! h
  83. 4 \5 q5 h$ q' Q" _
  84.                 Refresh.click()3 E; l  `2 M- x/ n2 z: a
  85. + u! `! `2 O  I
  86.                 driver.set_window_size(1280, 727)
    $ {* N5 `+ k. s+ t

  87. " e. M; h7 U* a8 A, n2 V
  88.         except Exception as e:
    8 J- d1 ?0 \4 ]4 L

  89. 3 |5 A4 V" d# M$ h
  90.                 pass1 [5 l* h0 q+ F' ]$ _
  91. ( F6 @; v8 P8 ^3 b3 J3 F$ G' g
  92. def checkcaptcha(driver):
    $ b# N6 W& p9 [, u1 b5 m

  93. / i$ c$ X% r- p: R
  94.         try:
    ' R% l2 L9 G* U
  95. % n& d9 i& a7 L) t1 r3 \
  96.                 captcha = driver.find_element_by_id('captcha')8 s# f* t. f% x4 _
  97. 5 {* @6 h, x) w; S& Z: H# M' E
  98.                 print driver.get_window_size()
    , n6 J$ a+ Q3 }$ s
  99. 5 w3 |! d2 z( a# v7 s7 k% i- ~
  100.                 time.sleep(2)
    # a6 b* e9 B' Q2 i) p1 Q$ g( w+ l
  101. 3 u8 @( ^6 f& X
  102.                 driver.save_screenshot('/tmp/screenshot.png'), ^$ N- r" c& t. i

  103.   a8 L* {) i% ~% I4 T. j+ Q
  104.                 im = Image.open('/tmp/screenshot.png')& X: [) N# g) }0 O0 r( j# l

  105. 0 i3 j% ~. w  x* A7 ]
  106.                 #取消headless模式/ T+ E1 p% p! E9 H0 n" Z; a" I

  107. & e. c+ ]1 d& U# P5 a
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    * G! y) C5 F$ {6 p% z4 p
  109. * M- g- _, ?: {
  110.                
    1 n5 I0 C3 y* k% A# A6 p% @

  111. & D9 l+ o1 [" `' f& j2 `* f
  112.                 #开启headless模式. r/ ?1 r7 N' i* `
  113. + T3 M0 m8 Z! D0 n$ w% O% t
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    $ N1 C0 g; c. A3 O0 Z

  115. 2 ^* m- g3 ?9 e. l" y, \
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")3 Q. i& H& x. E1 u8 z& ]% ?
  117. ! v! q4 x" V7 ^; x$ S
  118.                 left = element.location['x']+ R1 R' q! S0 Y8 E/ D) F

  119. 8 G8 y1 j' ~) g# F
  120.                 top = element.location['y']
    $ v- V* y4 t: u& O$ o

  121. 2 u8 k  s; Q. M: m
  122.                 right = element.location['x'] + element.size['width']2 ^; [7 H9 M. D2 M

  123. 7 g1 ?5 T* k; n" T* Y$ V& t! u4 h
  124.                 bottom = element.location['y'] + element.size['height']
    / i- C" M5 H# F9 J( k; _! t

  125. . Y* Y: C) ~1 b2 ^1 n
  126.                 3 N) t: n" `+ S3 m: z% i

  127. % ~% z( p' T, r0 p1 G) Q
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")9 M4 d3 f% V9 T
  129. * }# S" z! A9 l2 H3 P
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    - f9 {% x5 n$ N: m1 w; G5 N

  131. # M' v/ ?* F* c2 E
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    ) d% u- m  T; h0 q- D$ X; P/ E
  133. ' Q) H) b% U! c7 b+ }  F, b4 U
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')2 a* U$ K/ s& O* c3 k
  135.   c+ e- e5 Q" F" U6 R
  136.                 image = get_file_content('/tmp/screenshot1.png')
    5 _& h$ e; x* t( K! k" C

  137. 3 E7 o) ~, m4 N7 h  K
  138.                 a = client.basicGeneral(image)
    # T4 h% C8 I& V) Y( E$ Y  G1 E8 l4 V

  139. " u9 P0 Z: I$ ~2 U4 D0 w
  140.                 print a
    2 w6 A- {  ~  S

  141. ( s' j! X6 n( V2 \
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    % l3 T: D! L0 h" i' l3 b' v( F

  143. 1 I  T! {) f4 M
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    6 L/ W$ ~* x0 u' m3 z; n( G8 m+ \
  145. 6 @) c. X3 a: a" M4 l$ {. L- Z5 x
  146.                 yzm = re.sub(r'x',r'*',yzm)
    $ P" P# d, L; C& h! y
  147. : r  A; E+ F, l* Y! Q+ i+ q" G
  148.                 yzm = re.sub(r'X',r'*',yzm)) _% x; f& B7 b& C0 D' l
  149. & t" F4 e2 w; s0 P8 U1 j) N
  150.                 yzm = eval(yzm)
      ~/ B8 A; Z, |( f% s4 V

  151. , F5 I' p8 z8 }+ o
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))( s2 ?) L2 \7 M+ |( G$ |
  153. , u- ?# \0 c* d, x  z0 p% ^
  154.                 print '验证码: ' + str(yzm)
    $ r4 ~& H* }! H* `( j& Q

  155. 8 I- ], \+ i5 F4 _3 j, R7 h; @9 f
  156.                 driver.find_element_by_name('answer').send_keys(yzm)! a! M, J  Z: O
  157. 1 u3 N$ T$ c% K' q
  158.                 driver.find_element_by_name('submit').click()) x0 ]+ W' p5 d6 X0 ?0 N: q6 L

  159. / c% o9 q& w1 L0 Z
  160.                 time.sleep(3): D5 _6 t1 o! u; l; P
  161. . E+ m, }. @1 B+ W+ N- {! j
  162.                 return 1- e* z! f4 k: M' N7 C- F

  163. . \2 Q" |. K( f* n
  164.         except Exception as e:' J' r7 L  G4 T. M
  165. ' R( T5 E9 t5 K- K3 ~; O; t
  166.                 return 0  O5 h5 m3 m1 F2 x* P% a* H" k. n. G- n

  167. " e+ @! Y3 C2 [& K, v6 O
  168. def followbutton(driver):
    # t6 w) |$ h6 Q8 j$ _
  169. % Y: i& e/ O' k/ Z0 z" S
  170.         try:7 }" l; k+ X9 s
  171. 3 P* k# L! \5 T8 k& m5 X/ D
  172.                 driver.switch_to_window(driver.window_handles[0])
    $ J9 d; d; D; A6 s- W, {% J; r% y  x7 U/ H
  173. $ s/ D  Q2 x$ m9 o
  174.                 points = driver.find_element_by_id("currentpoints").text1 W3 h: K9 j  b, V5 f

  175. % J* W. D1 \2 B7 |* y
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    ; G) g2 b) O4 b' L
  177. 9 ~0 g8 K' T# D
  178.                 driver.switch_to_window(driver.window_handles[1])
    0 I% W2 \& F6 V- o

  179. & K& r  p  e% g  Z* U: [
  180.                 VideoSource = ''.join(driver.page_source.split())
    ; @% \2 k8 _0 K" t, Q8 g

  181. : u/ Y: ^4 f3 _  H0 d0 W  H
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:" F- P9 [7 z4 `' ?/ Q8 _' H5 o; r5 z' g# s
  183. . F( t* B+ A9 I5 z4 b5 a
  184.                         print VideoSource
    & {# T  y5 `% t, b  }1 H% q) |

  185. 5 I, m# n  n; u* @) v
  186.                         driver.switch_to_window(driver.window_handles[0])
    0 W! X8 f/ J  j5 C
  187. & n/ ^$ o" i; p
  188.                         print "Refresh..."8 j) W# a. `! C" r& v- l
  189. 7 W3 h8 r$ r9 I- U- a
  190.                         driver.get("https://youlikehits.com/youtubenew2.php"): m9 ]! j# }( U' }
  191. / I- ^/ C) |% `, Q4 i
  192.                         time.sleep(1)
    / Q+ h$ u" C, L" j. ?

  193. * \7 K$ }) c) }
  194.                 return points
    ! L6 y/ K  i* Z4 q
  195. " M" z0 D/ }, {+ K6 B9 C
  196.         except Exception as e:
    6 W& T% x; R; z/ R4 `: O/ |

  197. 2 e2 @' E3 r2 Q4 Q+ r
  198.                 return 0% U' @1 d7 M5 ^# [$ j

  199. , y* F  R% y  B, D
  200. for i in range(0,5000):
    : ^3 M" [7 k, P% k  N& r2 o" X

  201. , R. I* Q8 K2 ?1 p. c) \% Q5 i
  202.         try:* [* a. {6 J5 C3 l6 ]
  203. 0 w- _2 u( T0 X: u4 X9 `% }1 \
  204.                 captcha = checkcaptcha(driver)
    0 Y& u: x0 F2 i" S1 y$ G" g9 o2 s

  205. ! N, J" A+ k( G$ T& a2 K& G8 f9 P
  206.                 time.sleep(1)- p/ o2 I# B/ x5 ~1 j' r

  207. 7 g: w8 c# r  C* K1 [1 {4 ~
  208.                 checkRefresh(driver)
    4 v" u, L. S* |) R" d9 J. k2 h1 j

  209. * q6 P% B) A4 C# S6 p
  210.                 points = followbutton(driver)8 w/ X) ?* ?; @
  211. / @0 \5 Z% ~* u- B3 |
  212.                 time.sleep(65)
    8 a# ?' @) `3 l" v$ t3 R& y; J

  213. ( [9 l% p! k7 H
  214.                 driver.switch_to_window(driver.window_handles[0])
    % k8 v3 A5 [0 ~$ I1 ~% x

  215. + w8 K; n" s. b7 z+ e
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    - i+ ~! `- m+ i

  217.   H1 B& ^+ I- h. W0 h1 g
  218.                 print "points: " + str(tmpp)$ n- E" I$ b0 u; @% ~7 S
  219. ! Y/ U7 l8 p2 o: D( f
  220.                 if points == tmpp:
    . [& x- I' _$ |

  221. 0 x! u: t: I  h: F
  222.                         print "Refresh..."
    $ w2 D7 l) G" b0 ^* u
  223. $ i5 ?+ ?/ F& t9 @4 P, K0 Y" P* `6 q$ D
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")1 T- N6 R" B0 c5 `- ?+ A

  225. # i- }; T5 I( c, f- I
  226.                         time.sleep(5)' f, Q& q; g# N( f

  227. 9 [' B$ |& N$ D
  228.         except Exception as e:
    ( G4 k* `# H/ w
  229. 4 p' ^& }% U2 }2 p5 z; r0 N% w) w) O
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
      C: s* M. |3 R- j
  231. ' ]8 d# a2 L1 v, t: D% L. H
  232.                 print 'error: ' + str(e)
    * i6 L( q6 X& ]4 H
  233. $ c! [7 o! a. y, N
  234. driver.quit()
    ' [+ `$ ]: @# F) V7 Q1 q4 }
复制代码
* n- G& z  k3 Z: G3 o0 M

) W9 l1 H# K% H
$ L; H6 W, M, C2 g, [ 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 5 b: _( N; e3 p) R" P1 _. X
* v6 u5 B3 R( X8 {) ]

评分

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

主题

1034

广告币

1530

积分

高级会员

积分
1530

社区QQ达人

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

使用道具 举报

176

主题

1191

广告币

4255

积分

超级版主

积分
4255

社区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
7 f/ q) H. m$ A5 O. Q用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

/ x9 u% I9 c7 G& a$ Y- W/ q小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
7 g& c% o9 n* B/ D# W0 H5 ^' ^: I# d: Z; O+ Q# ]& y$ w" W  j- D
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-9 07:59 , Processed in 0.084970 second(s), 27 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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