AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理
Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 10284|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
PTMLink
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 ) o' ~0 ~. W' y( K( w; @" _

- H1 i, z% z- c: L  u
5 p; W0 a/ \# }( V

  1. 2 C5 n$ R# \4 O1 m+ r5 @/ Q
  2. # -*- coding: utf-8 -*-
    5 s5 `( L! Q' m
  3. ( M- A$ J1 M0 S
  4. from aip import AipOcr
    0 z+ k5 U* X4 r* {0 D
  5. * j* s7 ^6 w. o0 [; w* T
  6. from selenium import webdriver
    8 K1 v0 F9 m! U" d& n3 o# W! T

  7. ) g  q* x' u: f0 C# m; I
  8. import time
    & y* [! v* d. h- h5 r" @
  9. $ i* L: M  ]5 v) ?3 i
  10. import random
    0 Y2 l7 K8 k9 r. z! m7 d' ^7 \7 F
  11. ; k: O9 O9 g  u0 B5 u# i
  12. import sys,re0 X% {+ n$ M( m% H2 H
  13. ; t# ?2 @, u* ^0 T! d* t
  14. from PIL import Image, ImageDraw,ImageFont
    + G, B8 E" ~: K) R2 C

  15. " H0 {" P. e; k/ ~# d
  16. """ 你的 APPID AK SK """: d9 P$ h' m7 M

  17. 3 ]9 z( X' G+ z: e- i
  18. APP_ID = 'xxx') E( `( s, G1 `$ X! `6 B& w

  19. + o2 w0 `( M# n3 a# N# d. m
  20. API_KEY = 'xxx'7 v4 J6 H: S+ G; B
  21. * L( f, e: n( e5 }
  22. SECRET_KEY = xxx'( ~' ]) D. R# W' r) |* l" q4 s
  23. 1 a1 E: D6 E% ^2 X, N' V- @# ~
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY): N- O* |$ s, r/ C: ?
  25. ! d" R2 T2 b8 U6 ]% y) v, _( \$ x; V
  26. #PROXY = "127.0.0.1:8118"1 t% ^  D$ o$ ~1 x( J
  27. - w3 {5 s2 m* T' N
  28. chrome_options = webdriver.ChromeOptions()8 i7 @% @$ L- x' V
  29. 1 `/ N! d- K  {! J- O8 ~
  30. chrome_options.add_argument('--headless')0 f% g0 E" ?0 x: J
  31. 7 G: `) K% n! h8 G7 g+ D8 h
  32. chrome_options.add_argument('--disable-gpu')+ r; Q4 z5 A% u( z, r
  33. 0 D! `9 X2 A: _/ m+ j- S( f5 k
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)4 @2 f) ~  V# Y: ]& ~. ?4 [
  35. ( [: Y7 J6 F, [0 v% ~
  36. chrome_options.add_argument("--incognito")
    ; k9 ~4 P$ U" h0 f: H' \8 g

  37. ( A" [5 y) P) W! D3 z( u* d8 E
  38. chrome_options.add_argument('--ignore-certificate-errors')6 x: i; v6 n( [
  39. 0 [* `- p) T  ~) q7 b4 z8 d3 W
  40. # Win0 v: `- T) C: s; x! d' s

  41. ( ^5 I) G5 Z; y4 V: @
  42. # chrome_options.add_argument("--log-level=3")
    : y" L6 m& |# k+ O4 o
  43. " W. j/ E- A3 [+ M8 `! ]0 f
  44. # chrome_options.add_argument("--disable-logging")' j" M* i3 M# c' m6 W
  45. 8 f/ Q* C- n7 j8 B0 V
  46. # chrome_options.add_argument("--disable-logging")
    5 |$ G5 d! L  `! I) ?, g, L9 n
  47. 2 r3 R4 a% G' |3 C. A/ B* g
  48. #chrome_options.add_argument('--no-sandbox'): k+ m% o9 {0 \
  49. 7 G- _/ m( Y0 H  Q+ H' z0 q0 C1 ]
  50. """ 读取图片 """: x6 I  Y9 r* z, b# O0 X) Q% Y
  51. ' j' X  w3 S/ x9 [/ U2 n
  52. def get_file_content(filePath):2 l4 m& }. O4 A, S5 D

  53. ! ]8 P  X7 l1 o4 l- }; L) @
  54. with open(filePath, 'rb') as fp:" w! v* N2 g: ]! u9 V
  55. ' a. p2 L9 l5 h- k  e$ b
  56. return fp.read()& s+ S# |, \) F0 N7 H2 r
  57. * ~# L2 ?4 a9 V' L) ?
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    ! ?# I0 ?9 ~$ l  W9 ], q5 Q
  59. : e& p, h3 A: ^3 O: D1 L
  60. driver.set_window_size(1280, 727)2 P% V) r6 @& M

  61. , }) H( w0 n+ E3 T# G% V+ {
  62. driver.get("https://youlikehits.com/")0 A6 y  H! X, I
  63. + e+ e& f( H$ n; u" K
  64. time.sleep(5)
    : M$ z, q; |3 x0 v2 N) |

  65. ! {3 v* L! b4 U6 W5 \2 T
  66. driver.find_element_by_id("username").send_keys('11111') #user
    & `) N& B$ F7 Z. D% g
  67. / X) S& U7 q8 X& Q, }+ q
  68. driver.find_element_by_id("password").send_keys('111111') #password6 f8 \/ y3 v" m
  69. - p0 \5 p1 d' B" h! T! A6 H7 b
  70. driver.find_element_by_xpath("//input[@value='Login']").click()& {5 A4 U3 k- @- b

  71. ; x, x8 k4 l9 k
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    # T; C/ S9 E, X) R3 D$ d
  73. & ~- s6 C, O. F- J$ S8 `
  74. time.sleep(1)
    + Z8 _1 ~) ~& q7 k

  75. 1 i& s' H, `& H3 Q8 K' q/ p: \$ {
  76. #Try Again
    ! h' o1 p: _9 t6 ?, i7 n" {. ^
  77. ! Q" @! i+ F1 F4 S1 t' _, |" O
  78. def checkRefresh(driver):
      p4 I, Y! ^- G# A0 w
  79. 2 U8 E. z' P/ R3 k( M7 w
  80.         try:
    + T9 T% z6 @! P% Y9 Q% z7 Q
  81. 1 D# M. H3 ^4 N8 r
  82.                 Refresh = driver.find_element_by_id('loadmore')
    * _; o. s. h0 y5 u7 e' K
  83. 6 b0 L  [9 k$ b% D; x4 T  x6 q
  84.                 Refresh.click()" n& g  \& K# l! {' Z# X. @7 ~

  85. 3 a  w) P' F( V" @+ Z
  86.                 driver.set_window_size(1280, 727)
    7 o# {  l/ f' F+ b
  87. : A3 _8 V. j( L5 R7 e- r
  88.         except Exception as e:0 N) a& e7 Y# W6 Q+ k9 E

  89. 9 Z$ \  F" f$ j8 g) \- ?( _& u( S  D
  90.                 pass
    2 }1 s4 B0 F$ |" ^0 H) @8 p
  91. 3 a3 [6 O, s: X: m) T5 Q/ G1 H
  92. def checkcaptcha(driver):; x5 Z3 y% V( L& s; S4 p
  93. 2 ]+ G# \# F: a3 Q) y
  94.         try:
    / R* d6 N" I$ S
  95. ) Q. L& U) ]- H, i# f
  96.                 captcha = driver.find_element_by_id('captcha')
    * Z4 w& f5 R3 ]1 V: b

  97. % V. s' f" P5 e& y% C
  98.                 print driver.get_window_size()
    0 S5 N1 }3 P" g) t) ~

  99. 7 W$ V5 y$ T3 j
  100.                 time.sleep(2)
    2 z4 v# B" x4 s
  101. ! K) T8 N! x! k+ A* B
  102.                 driver.save_screenshot('/tmp/screenshot.png')7 n( e& |7 e/ l: [; S- `

  103. " F6 Z1 |1 o  T2 N6 i2 G+ X* ]3 D
  104.                 im = Image.open('/tmp/screenshot.png')# H* A% q% K0 X, z/ M9 a/ @
  105. 4 J" }% U7 I. J/ Z0 p) B
  106.                 #取消headless模式4 p6 ]& }" r- k5 g  J" w
  107. , x  z6 |* Y- i% o
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)  g- ]/ b& A0 E1 p- @! ], z  x

  109. + V* a& M# u9 n: p7 }
  110.                
    6 U! j% c# ^4 \9 t" _' o* s

  111. : I5 V5 }3 ^/ m) p( `
  112.                 #开启headless模式
    + B- W3 L9 t) s( g+ d  `0 A
  113. 9 D& m; @4 p- W: Y5 l: ^; [% }
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS): h) }6 F" W7 d3 N  `* f

  115. 6 j% _$ {- W, F- y
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")% g$ a4 G2 a) e, |3 G
  117. . O, P' ^$ W! T! S0 d. \
  118.                 left = element.location['x']
    / s' F3 c: i- B' W; F
  119. ( U1 e1 z- A& k
  120.                 top = element.location['y']3 a/ D0 s+ U+ L$ S( m' I1 `
  121. & |- `  |; U7 m# M0 Q2 X" t! b8 r
  122.                 right = element.location['x'] + element.size['width']
    ( \  C. q5 b4 K" Z; ]! O

  123. 1 u/ s3 @+ K9 x0 @9 j! v# V6 Z) L
  124.                 bottom = element.location['y'] + element.size['height']
    * Q, {4 k9 |0 S0 p/ a

  125. : s: v& Z  {5 r7 j+ u, L
  126.                 3 N4 ]& f" ~$ }2 Z+ v0 o3 [
  127. + r' l* h- `: p: w0 F  ~& N7 Y
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    ( z7 e! C: C  d8 I

  129. - S' }/ F( g: O. e; j! L' y
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    * s$ ^8 h% g4 \% ^

  131. ! Z- K) P2 A+ S( x# o% k7 ]8 u) z
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")% o, T! W6 E2 E; q# U
  133. 5 O) Y1 x, V  d, t; y
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')) h# S6 J! v$ q5 @2 e% ~
  135. # m5 Z8 R* h/ f) o7 I
  136.                 image = get_file_content('/tmp/screenshot1.png')
    1 ^9 x0 h- r' l) u
  137. ) f" }4 k5 i% e
  138.                 a = client.basicGeneral(image)9 ^% z5 }( R7 J2 v; c  i6 Y( V+ d* y
  139. 5 e; W/ D2 ~: X; \2 g
  140.                 print a! O7 E7 B' A. S8 O  c7 x

  141. 4 _/ |) x6 T( J: V3 v4 n
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])" J/ h4 a- J' i7 y: b

  143. ( N' o& s+ @; T9 z7 X7 ]0 W
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)' m% B& A; }) ]

  145. 7 q) G3 d' B  {' ]
  146.                 yzm = re.sub(r'x',r'*',yzm), p# s- z3 a! H1 A; u: t

  147. 4 N! ^+ T1 H# \3 i
  148.                 yzm = re.sub(r'X',r'*',yzm)
    ) z1 A2 w- z. O: W9 S% d

  149. 5 h! }- ~$ W: u( _
  150.                 yzm = eval(yzm)
    1 a5 H. W" X$ Z  Q8 i+ a* A

  151. / E( S# p& S. d0 N) W) Q
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    & ?% {1 O/ K& X( l; U5 R
  153. : m: S# B7 f4 E7 Q* _
  154.                 print '验证码: ' + str(yzm)8 z) l& T8 n( s" d5 I2 d6 C2 }
  155. 2 Y1 l" j: y$ t% C
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    8 I9 w$ \0 h' e8 M2 W9 `
  157. 4 I5 K2 E  x# u$ a: v( \1 z  D
  158.                 driver.find_element_by_name('submit').click()
    * C# D# A+ Z0 O$ D

  159. / ^  u7 _. g( M1 M5 D
  160.                 time.sleep(3)
    " V7 A0 w6 N7 ?% H) a5 Y% M4 o5 G

  161. . `6 R* O# P7 B" z$ l
  162.                 return 1. R8 Y7 q2 H2 u% X8 D3 E6 T6 U
  163. * T8 N) a: `; k3 E
  164.         except Exception as e:/ z8 Q' P, t4 Z, O8 v; f1 K' m! n

  165. + N; ?, \* ?# g- J' }0 A1 J
  166.                 return 0
    + D+ g7 e8 P6 K. }  A9 I
  167. # i, S. n# y* r' P
  168. def followbutton(driver):
    + x, y2 {6 X* O& I9 }9 D; V

  169. 4 e: E9 p8 A7 V1 _7 M" h4 p
  170.         try:$ E) b$ |# g7 l: v) M! |0 V/ D* ^
  171. 9 G( X( m) g6 S5 ]8 D
  172.                 driver.switch_to_window(driver.window_handles[0])
    . [0 |5 d+ N8 }# i( a
  173. 1 z( F( I, P4 i
  174.                 points = driver.find_element_by_id("currentpoints").text) b6 P$ r' ^! k% b6 o& m

  175. 3 L% Z. E. l6 e# v# _- j+ N2 [
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()1 H; d# U, \1 g: r0 u
  177. " E$ Z# f, j+ F
  178.                 driver.switch_to_window(driver.window_handles[1])
    5 ^$ x, K" }4 Y& [

  179. % Z" X& P& Q0 g' b# @1 E
  180.                 VideoSource = ''.join(driver.page_source.split())
    " u  u, Q! s3 Z2 P; k$ @4 o
  181. ; C+ G5 T# Y% S1 t9 ]6 \/ v7 O
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    + ]) t, [: ]& H6 O# s

  183. ) N1 ^6 g) t3 S1 M- T
  184.                         print VideoSource
      N2 K! D2 |, s! T! l
  185. & t6 J) g2 S- j
  186.                         driver.switch_to_window(driver.window_handles[0])! n# [, o6 m. D7 x. M: i, P
  187. ( Z* g3 P6 M; |4 B; q
  188.                         print "Refresh..."4 O9 @$ N1 a( N' p* o
  189. 4 T) a. [; @! A+ H
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    , ^6 ^  h% n) R9 o/ e

  191. ! v0 v8 f8 ^% ]  k/ L8 m
  192.                         time.sleep(1)
    & T+ [! l: v3 F7 M
  193. : ?* b4 l3 B5 J6 B" |
  194.                 return points$ Q3 [( U& P0 \8 h' C
  195. ( n1 E2 w1 l0 \+ ^3 H' q
  196.         except Exception as e:- c) p. p% [5 e4 k
  197. . |; J6 _; O9 V8 ?7 f6 {& }
  198.                 return 0
    " d: \) k2 k0 d& C
  199. , t0 V" B: ?. V! }* E7 F# t) T
  200. for i in range(0,5000):
    ! {# E, J; N+ O! M

  201. : I% r* R( u, i6 U% k# o  Y  k/ p
  202.         try:' K9 n' X, j! d$ z

  203. ! ]- V9 ~9 L! L9 c5 T
  204.                 captcha = checkcaptcha(driver)
    $ I8 ~, K# |+ \# {# l/ R/ Q
  205. 2 |( h- x" I+ l+ d9 A0 o
  206.                 time.sleep(1)7 b) m% ?8 P; _8 M

  207. ; A8 B' V8 Q; t% y1 z: [0 _& `- ~
  208.                 checkRefresh(driver)2 D' J( }6 T( t/ _! F& T

  209. $ u( o! [0 g. X. Y+ O* z
  210.                 points = followbutton(driver)( z: |, u9 X6 g: n! R4 _2 M
  211. % X" n& x( J% z( S' x1 e* z% u
  212.                 time.sleep(65)% W& l3 _) K$ h) N5 O0 R( h

  213. 0 m2 e& R) H0 ]
  214.                 driver.switch_to_window(driver.window_handles[0])
    5 `6 S3 y; O# l
  215. $ q, m( ^) v; ?
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    , o3 F& ~2 m+ C( d% z5 i

  217.   o' v' s/ O% K" m9 Y
  218.                 print "points: " + str(tmpp), C, {  N8 V' C2 M
  219. 7 {0 z+ Q' R6 ?! r; |
  220.                 if points == tmpp:
    6 K- o+ q& G6 B! k* z& D
  221. 7 Q2 E6 f3 v+ @% _8 P1 O- _
  222.                         print "Refresh..."" Z- a) v' v0 _1 G# ^- c6 I

  223. . Y, B( A* ]0 a: @6 w! f
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")  `2 O0 Q# A5 e
  225. ! l, ^' I% V3 d: |- x
  226.                         time.sleep(5)
    + O+ k5 E' d5 T
  227. , Q1 U5 D9 F6 @# z0 c( T/ W
  228.         except Exception as e:
    1 ]" T& E7 d: h( p2 B/ p

  229. , }& `$ ^8 v" b3 \/ ?
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    + O' g& Z  ~* o5 y$ U" A- {

  231. 0 U0 A4 R1 g1 ^. C: Q
  232.                 print 'error: ' + str(e)# \7 j+ _; H  u! M) T' X
  233. 8 t( V( A9 l6 V/ }5 ?
  234. driver.quit()1 W4 x0 {' o# p! o. k- m
复制代码
( _8 X% G, x* N, F$ ^' z9 j- l

8 ]. h# y2 j1 J1 A1 {& ^9 `$ Q
1 _! b2 l0 C- a( I# V( W 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
; Z+ q/ s/ `# Q# K, F8 [" m* @( J& Y

评分

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

主题

1024

广告币

1521

积分

高级会员

Rank: 4

积分
1521

社区QQ达人

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

使用道具 举报

176

主题

1191

广告币

4251

积分

超级版主

Rank: 8Rank: 8

积分
4251

社区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
" ?( a9 z5 e$ F$ G" S用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

5 B( g1 X2 J5 y' Z" _小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈5 a; P2 T+ H$ i& _

: E  M4 d% U, |1 j4 C% k
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-4 11:13 , Processed in 0.054009 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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