找回密码
 立即注册

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%,国内持牌机构 
查看: 10352|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 ' E& h/ ?" v, _+ y6 {6 F. a9 o

$ k0 s0 y! m: V- K/ h, x+ }7 {& S/ t" P4 s. s. T5 Y3 p

  1. " C8 o1 n5 j- u9 I" h
  2. # -*- coding: utf-8 -*-
    1 h7 J' n. _* n" b7 L

  3. 4 J% h) B- n/ m/ s5 S% f
  4. from aip import AipOcr4 w2 ]5 \. k  ?) v! r+ f8 N

  5. $ d' I* `+ E1 ?! U1 @- r. b& k
  6. from selenium import webdriver: @1 \! y1 I( o- @
  7. : V2 R- x! r, Y4 q2 q, l, ~
  8. import time1 q- M7 S; Q  ~- t1 [+ o+ {
  9. & z, u2 w8 r% X$ n, \, O8 [! t, z- [
  10. import random- r: d, J0 e6 D6 m0 \' W
  11. 0 S- d2 A- H9 t% g8 h0 K
  12. import sys,re' Z1 K4 W& q. B$ i7 [' D# X! }, i7 O4 c9 p
  13. 3 n/ @  i% p( h/ T
  14. from PIL import Image, ImageDraw,ImageFont
    , W0 s% h# u! l( p! a

  15. & K. T  x% |4 R* `# e6 q5 Y( o) N
  16. """ 你的 APPID AK SK """
    / K' l; W6 P. F+ ]

  17. ! E4 s* t! h) j
  18. APP_ID = 'xxx'4 K7 m5 m# d' z* E
  19. % l+ p1 S: {6 H
  20. API_KEY = 'xxx'3 ?2 _, g) @; k- ?) `6 w
  21. 1 ?  ^9 C+ B$ u$ ]+ X  S
  22. SECRET_KEY = xxx'
    . m0 e2 S- B! I  t5 ?8 L+ c2 {
  23. 6 S" K6 r- u6 ]" L1 L- J
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)) }' }8 U5 I8 o  M  `8 s. u
  25. 0 k& [1 Y3 w' R0 n9 o- G
  26. #PROXY = "127.0.0.1:8118". m5 ~. j. z) |' g

  27. 9 O6 j9 |0 N/ A) x& c
  28. chrome_options = webdriver.ChromeOptions()
    6 L- Y7 \8 S+ ^  L0 f3 I0 s' m
  29.   \* b- {: v6 m+ g6 [8 k* F2 \
  30. chrome_options.add_argument('--headless')
    , d4 b  s2 I, m# j

  31. . S) Q; j; {9 H, I" q
  32. chrome_options.add_argument('--disable-gpu')
    . k8 j* o+ M3 a& b; v# a

  33. % h3 x( X: P! Q4 Y! \' T$ k
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY), X: |, }2 }" i; {0 w7 s# Z

  35. 8 K0 w* A9 ^$ D  a8 D, h9 |
  36. chrome_options.add_argument("--incognito")+ b# X( M3 s0 F- A% G# {

  37. 9 S2 C. D5 t5 t3 L
  38. chrome_options.add_argument('--ignore-certificate-errors')( |* O- D. N, d  G7 u
  39. 0 x! o3 L. V0 o; q
  40. # Win8 `% l! |, y. p/ t- z8 S
  41. $ }8 |# C# {' O! n+ z3 c4 ]
  42. # chrome_options.add_argument("--log-level=3")
    4 K& _) p* ^3 K' e# S/ u7 K

  43. # T, K. z1 X) Q! W3 T& Q! F( u( U
  44. # chrome_options.add_argument("--disable-logging")( O) P4 w/ {1 W+ t6 o  y. U& p0 `
  45. 1 F- z/ P4 b9 _7 ^: p$ r/ Y, [
  46. # chrome_options.add_argument("--disable-logging")+ v( J; E) r* Q4 ]. W% k3 G) V
  47. $ [) K; N2 F) H. u% b
  48. #chrome_options.add_argument('--no-sandbox')
    7 t6 g3 b! g) R! e7 o( x
  49. 7 j2 w+ Y. f8 W' d% a
  50. """ 读取图片 """
    ! }6 Z$ R/ {3 A0 T5 f. |3 Z

  51. # y; c/ a7 s- ?2 b( l* w3 Z2 |* @
  52. def get_file_content(filePath):
    : C4 h) g4 l: y' d

  53. * Z' j# }, x/ y- s- a# n7 B# z
  54. with open(filePath, 'rb') as fp:
    5 c, ^' b9 d  {: ?7 ]

  55. ; h) F  v* h# w! f
  56. return fp.read()
    5 |3 y7 B% Y: R1 [2 A. E$ Z/ \

  57.   b% N( S2 `+ o, o$ S
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)/ P) y! \5 U% L" a; `. F

  59. / U1 U" W+ |5 A: [7 _
  60. driver.set_window_size(1280, 727)4 u* {# g- h7 t$ Y9 Y9 m. m, a

  61. 7 Q3 u/ j/ G- H
  62. driver.get("https://youlikehits.com/")
    0 j- Z# e7 M& N7 g% k' {

  63. ' m; `% t- U' g! f2 O/ @
  64. time.sleep(5)
    0 t# c: X4 I5 S! ~

  65. 0 ]3 o- N1 F+ g' p+ n
  66. driver.find_element_by_id("username").send_keys('11111') #user, C* I2 G/ b2 {7 C% Q' s, a
  67. ' V7 p$ ]/ M1 [* Q, T
  68. driver.find_element_by_id("password").send_keys('111111') #password. {! @- g2 ~+ j) i

  69. - }5 @4 l* F+ _" a+ {* ?0 c! \3 y) [
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    $ b5 S1 k  U/ i6 P. ]5 y

  71. , m+ n0 Z# W! K4 I* _
  72. driver.get("https://youlikehits.com/youtubenew2.php")& _+ k/ U4 \; ?, r, X

  73.   a2 r- n: ]: d- ~4 U  {
  74. time.sleep(1)
    - W; n) e/ q3 U' [" I4 B
  75. & u5 [: U. h  s5 }  b
  76. #Try Again
    ( d1 w9 P2 A, Z. G! z) q

  77. / k  t. L. V0 Y/ l1 T% R
  78. def checkRefresh(driver):/ Y- Y+ u* Y" g# \  z+ Y- \1 q
  79. ! ^5 w  ?/ ?  M% Y8 @3 ?
  80.         try:0 x. D& N+ c8 n0 i$ L& P6 j

  81. $ C; I! W) h5 J
  82.                 Refresh = driver.find_element_by_id('loadmore')
    5 H6 z/ }0 l& T! Q

  83.   r# J. X) j& G) P
  84.                 Refresh.click()
    - ?# i4 g% R5 }6 I3 i

  85. 7 H$ _9 k6 Q/ [. w! g1 U
  86.                 driver.set_window_size(1280, 727)+ A! Q. _$ y& \1 d# c$ U

  87. 1 f. j6 w! d+ r5 z2 ^
  88.         except Exception as e:
    # M/ w* D) O" N9 J  N5 A; j6 Y1 v

  89. % X+ G  y/ R$ @* F( Y
  90.                 pass' l5 T7 p' g- }$ S  h( [* ]. |  Q

  91. 3 D- ?9 w' ~  U7 k' F
  92. def checkcaptcha(driver):
    ' O* ^  s$ N" n2 r& B
  93. % y8 t+ f7 W! {# G, C
  94.         try:
    ' y: k. U5 x. i# e+ z1 R4 j) @" U
  95. 2 |! `. @0 z; `' m
  96.                 captcha = driver.find_element_by_id('captcha')5 }# x; d+ i; p; g: d/ v& `

  97. $ `% t) I/ P0 g+ Z$ \7 O
  98.                 print driver.get_window_size()* P4 ^6 j. S1 E+ n2 s+ r% N
  99. , `! C, W5 c0 M
  100.                 time.sleep(2)0 R6 ]- L) l. [9 \) c5 x
  101. 2 k! _% t9 n) e  {
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    7 f# {: R$ B; Q1 h/ [

  103. , A' J4 I' X7 p9 N0 o1 N  ^1 P9 r) K
  104.                 im = Image.open('/tmp/screenshot.png')8 ^: ^# l2 f2 I9 t. E0 b( n% ^

  105. % z- C5 r2 Z' z, i$ ^! R) s
  106.                 #取消headless模式
      A) L; b! X3 R* d, D, y2 `7 f
  107. 6 F" j; X' |# z+ H# ]1 i) F9 p
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    " V' i, J$ x3 m+ _& ~$ ]
  109. ' z( Y7 q6 s& i
  110.                
    7 r4 \: |3 G7 c' k
  111. $ X5 x) ~. u5 {9 u3 `
  112.                 #开启headless模式9 A0 Z7 A7 a% o* B" C* Z

  113. 5 u$ m4 S9 ~; V# |4 }6 z
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)* A2 t0 S5 d% d9 g- U2 r" ^
  115. , I9 d1 o! g, I" G# T) W0 w
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")5 W" M% L: K0 p- o$ F$ X% r7 Z

  117. % e# |& O! i1 \3 N0 T1 F
  118.                 left = element.location['x']
    % B1 A+ i4 Y/ Z* [' a' v7 q

  119. / f+ ^8 }/ a. x5 X/ K" y
  120.                 top = element.location['y']
    6 k& v% O) k) ?% q
  121. / V3 N. H; U* W* s
  122.                 right = element.location['x'] + element.size['width']
    ! J7 B6 @. v' Y8 v! {7 C( G# g  X
  123.   v5 A! E; V# m: K- Z5 _
  124.                 bottom = element.location['y'] + element.size['height']
    ; D& h1 z  L$ E7 \
  125. 7 x6 r& ?9 B4 N
  126.                
    ( U5 C. O" B3 T
  127. $ v; v- J1 D; F  a4 Y* A' O
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    % k1 c1 k+ i2 w" a

  129. $ X0 Z$ l% |3 E% f
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    : g$ c, \, ~& z( v! a

  131. ; u& @$ ~# q# ^' e; l
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    4 b$ v: U1 v* W. q  O
  133. ; ?! `4 \- z- b. d( N; P
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')/ D; ]! w  z" x$ o

  135. . i0 n1 I1 N: U3 b
  136.                 image = get_file_content('/tmp/screenshot1.png')
    , J+ H5 R6 O. ^" d6 [- e* b" @

  137. & n& Q3 C7 }+ A6 m: d
  138.                 a = client.basicGeneral(image)7 |$ \: I! m: N/ ]. J
  139. 9 E# q! U% h  S0 Q! n6 a4 w; E$ D
  140.                 print a9 S' }) x, \# M: B  Z# e6 x" ^* m
  141. ' K: ~( M& t  j, I
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    9 k+ a6 w* a1 l6 R! R/ \

  143. / O$ ^0 c0 z% L8 K* [+ u" q
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)1 ^) f% m, T( v* \% d

  145. & M: y7 O9 |# s4 ^0 B
  146.                 yzm = re.sub(r'x',r'*',yzm)6 ~1 z' n( t& [8 s: ~. O
  147. ! z+ K- H4 \" W; b0 _9 `1 k3 [  r
  148.                 yzm = re.sub(r'X',r'*',yzm)0 d, W2 E* ?! j" s) Z) v' T: o
  149. ' \$ z* `0 r8 Q
  150.                 yzm = eval(yzm)
    1 h% M" c5 A# m0 ~3 k. ]
  151. 4 t& I& t0 G% ?( x5 y* L: X! D, O
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))5 F, e. }; k8 l1 J! a
  153. 4 k' X  v: A4 Q% d/ d' L. t9 u* c
  154.                 print '验证码: ' + str(yzm)
    % |/ n7 A( q; M7 E" O5 L/ q

  155. . M& S5 n' O; `2 ?3 T3 ~3 [$ X, _
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    - A/ G8 `. ?2 p+ D7 o

  157. ! u! i/ x+ V% p  y  D7 [: R
  158.                 driver.find_element_by_name('submit').click()
    + Q, B$ ^; V* N/ j, k# i

  159.   }% D: Q8 g, k1 ~, i
  160.                 time.sleep(3)
    * l* k' l6 f& q
  161. * d- }' C2 @7 j! O
  162.                 return 1; `" G- K- m5 |3 ]: J% L
  163. 7 \1 {; K  U  y' Q4 q# d+ U& E7 d! T
  164.         except Exception as e:
    - N7 c8 d/ |! M7 G3 Z3 n

  165. . Q2 j! A7 u  f0 y! @9 k; O# L
  166.                 return 0
    0 c7 Z% @  u# Q+ i
  167. 3 P  R  G& \! ~* ]+ X' d  u0 O) \
  168. def followbutton(driver):  h, [/ m/ r! x/ b7 ]0 e
  169. 6 U( N$ y8 d- Z' J9 `# S$ E  w
  170.         try:0 @3 k% x+ E% i
  171. $ s- m1 |* U( b. h
  172.                 driver.switch_to_window(driver.window_handles[0])
    $ w* [# a: a$ R6 z( @1 O5 d5 E/ y

  173. ' y3 v/ ?* L9 r
  174.                 points = driver.find_element_by_id("currentpoints").text
    - {9 q. F6 N) }, C+ Z. p- H* Z
  175. 3 n  b. T% c8 ?9 S
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()' H4 ~* \; w1 o

  177. / O) `$ l: {: y/ w
  178.                 driver.switch_to_window(driver.window_handles[1]): `4 |  w; u1 \4 [$ X" L) F1 X

  179. / c' m9 U5 n0 f: K
  180.                 VideoSource = ''.join(driver.page_source.split())
    + z, G+ h# T0 b, o6 J

  181. # ^( c6 P8 k: @! v* z3 t/ F0 @
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    4 K" T0 V- X( u& T! `, g
  183. 8 }8 K, b0 ~) f/ B9 ]$ x8 t
  184.                         print VideoSource( E  p3 B! ?$ x# ^1 n! [

  185. ( J) y2 q4 \0 G9 i7 s3 ~# z
  186.                         driver.switch_to_window(driver.window_handles[0])
    6 F  I% ?) M8 f! H

  187. $ q2 G: v: {' Q; [# \2 h8 e4 {
  188.                         print "Refresh..."
    ) f; i' G. |2 N; H9 d, k& Q9 L( a
  189. 0 R) f0 c0 P8 h* _( I# C
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")7 h& t; b: E. v7 v- Y! B

  191. 8 ]8 f7 n& q  Q6 ]. c& l( s& [( d
  192.                         time.sleep(1)
    4 C- e" k. v5 D% d
  193. 4 [2 e: h- q  J5 l
  194.                 return points
    ; {" T+ m; C- M9 V, j0 Y
  195. 0 l! V  e* i" _" ?/ S0 b
  196.         except Exception as e:
    / g* G, B  C0 `5 h4 V

  197. 7 g% k* \# L. w& m/ D7 b
  198.                 return 0
    # {" y* `8 T; T: e/ t4 \( T, M
  199. " ]1 N; ~. @6 I  a: j4 L
  200. for i in range(0,5000):* {) }, w% i9 X; k

  201. 8 L9 ?7 A6 r! Q) i# I" \( u8 e
  202.         try:
    " b: t9 k) k% `: {: r( [$ F

  203. 8 J9 D6 U5 G/ P, F
  204.                 captcha = checkcaptcha(driver)
    + L- F5 c' k, M* S% N' d
  205. - @& l/ M; J* i7 C+ L) D6 V, H! k# v
  206.                 time.sleep(1)
    3 y$ F! j$ K9 g+ Z
  207. 1 ^/ F' }7 G# X. o( W$ b# p
  208.                 checkRefresh(driver)
    : i' t; G8 Q# \! {
  209. + V  ^+ @. K/ X+ |# C: C: Q& i3 s
  210.                 points = followbutton(driver)9 y8 j& ?& T1 w" O
  211. $ a& M+ o1 X+ W, d9 ~. F* z1 \3 Y2 N5 r
  212.                 time.sleep(65)
    8 L, O  G  [$ S& C7 I) i  J
  213. 8 x4 b1 W2 ?4 L! H, s5 u
  214.                 driver.switch_to_window(driver.window_handles[0])
    " T; i* R) I! d4 Q& z2 m, n+ |

  215. ! ^8 Q6 C! R" q
  216.                 tmpp = driver.find_element_by_id("currentpoints").text; v3 V* Z' E" C+ c* }* G5 o6 o) H

  217. " }$ {0 M2 {# ^9 X
  218.                 print "points: " + str(tmpp)
    ! ?( e; Z1 h: P! B7 m; j/ M- S* `

  219. 1 x/ P+ ~$ ~/ O
  220.                 if points == tmpp:& W6 K& [) l* D8 H9 r
  221. 5 u' }" _, o( o$ R7 A1 F  }
  222.                         print "Refresh..."
    , |7 F4 T& ^9 p; L# |

  223. . I( U! H  b  `& b8 y# W% l
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")  k4 w. h/ N* z, x* h$ K6 e! q

  225. 9 y5 s. g. v5 Y. B% v
  226.                         time.sleep(5)
    ' g! W2 {0 c* |
  227. # |' l* j0 D; ], V" ]! x/ i
  228.         except Exception as e:
    / r. L9 P7 y. e5 j- @. u

  229. + y2 \% ?: A2 N9 i- _
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    - q" O0 G2 \0 I- m# b: K- j

  231. / E; m* V& }. L* z
  232.                 print 'error: ' + str(e)& Y0 o3 u( Q1 w: c+ l) b! B
  233. . E+ Q) K& c) O6 D
  234. driver.quit()
    1 I2 C4 `3 R. X4 r9 x0 p4 I
复制代码

: Q% u# U5 l3 R
( L0 a8 g* f1 `8 C; J0 e, Y) {; T3 p5 X  [
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
( U# w. g8 x/ |! Y3 b" c) ~3 J
1 {$ b3 |, p2 K0 B: [, L$ @( B

评分

参与人数 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
$ r! n  G5 Z3 a# z6 p, S! w用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

. Z* ^% ^) S4 l. }小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈9 @% v9 v9 B: ?% o# l* s

- \3 m9 D+ h% O
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-14 04:37 , Processed in 0.081858 second(s), 28 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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