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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个寻找顶级电商?AdsBranded等你!TK老户/国内外端口/预审/加白
SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10203|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
, m3 [' O# L) r! X: y/ W
- }8 h" i9 v* }8 W- c8 Q$ a
& e5 K1 ]( J! ?

  1. $ a" {1 `, ?; p- W
  2. # -*- coding: utf-8 -*-" c# K; g8 L6 u9 O. p
  3. ; s! `2 H4 }' ]
  4. from aip import AipOcr
    ; g  Z! X  F6 _% u2 _8 h
  5. # E3 b! e! a5 ~' }) A6 B
  6. from selenium import webdriver
    . ~2 O" a- I9 d* E9 [6 X

  7. $ g4 S; b6 o. [- }$ Y1 B0 e
  8. import time7 Z0 l: S0 ^, `

  9. 1 ~8 G/ j3 @+ z5 |- ~- R8 f
  10. import random( O9 R/ C2 A" [* d

  11. " z* T/ ]( M1 D& }; w7 {9 w
  12. import sys,re
    , G  B: R! e9 [, ?

  13. , L0 V3 t! r) w" p+ o3 i: r
  14. from PIL import Image, ImageDraw,ImageFont8 F6 E1 y/ U3 R. a5 t% D& K5 O

  15. 3 f- w, o; ]. m5 L/ }. L
  16. """ 你的 APPID AK SK """
    5 @  Q) ^& }. o2 ?, o* _% R0 V) Y

  17. " T! |: x7 H* E
  18. APP_ID = 'xxx'
    % B2 o, ~* A" K2 _

  19. & t; C9 @+ P( W2 Z
  20. API_KEY = 'xxx'
    + |7 c0 S# e# U. [% d; {
  21. 9 K; Y+ i. }! e* p- t
  22. SECRET_KEY = xxx'6 }9 p3 `' e6 c0 }  W

  23. " _5 @' K8 |. y2 x5 u  S
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)! ^; n" x) I# ?3 T

  25. 4 k/ T, s+ G/ @! [
  26. #PROXY = "127.0.0.1:8118"
    , A0 G! _2 j9 p, k: y: s" }
  27. 5 y, M3 T/ X3 ^1 W( N$ y
  28. chrome_options = webdriver.ChromeOptions(). y* ?. K2 ~+ e9 n) R! d

  29. 4 D9 z9 G- f+ G, F' ?# j9 u
  30. chrome_options.add_argument('--headless')
    3 G0 y  C0 h) z( I: `

  31. , f) [: _6 q6 S5 O) l; a
  32. chrome_options.add_argument('--disable-gpu')
    ( t0 g1 m: \& u
  33. 2 }% y0 ~0 l! C. D' a4 @! b, @
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    " [; O, e7 C- l% X

  35. ! Y2 ]6 e7 P- X: k) {, s) T* n
  36. chrome_options.add_argument("--incognito")
    3 a5 _' X( a$ i& I. ]" ~- l

  37. : {  Z0 U1 H& ?5 M" P3 ~
  38. chrome_options.add_argument('--ignore-certificate-errors')
    $ A" O# i+ m$ R7 @8 C7 u3 n
  39. 0 N# s& Q. C7 ~9 _5 s: O: v
  40. # Win
    + J6 Q. V  ^+ W$ [. @6 ^* ]

  41. 0 b! Q1 E4 [9 B6 k& {+ [
  42. # chrome_options.add_argument("--log-level=3"); k. b. s! N1 H7 z
  43. % @# n0 {# m* G: g/ N
  44. # chrome_options.add_argument("--disable-logging")
    * k- N! w0 F4 I* {

  45. 4 Z# T% @2 R8 h" q
  46. # chrome_options.add_argument("--disable-logging")7 s! {* G" V6 \: m! T9 D
  47. * a$ k6 X" a" V' R& W5 `: @
  48. #chrome_options.add_argument('--no-sandbox'): J" m& d9 v( I! v8 x

  49. 2 M& `* m) d- Y3 O5 |4 W
  50. """ 读取图片 """7 M; E( P( J  C0 s3 M8 U3 @
  51. & @# V3 [* c8 U& c# p
  52. def get_file_content(filePath):6 w0 K, g" t" ]9 v+ I! @

  53. 2 i3 X: O+ V/ x7 {
  54. with open(filePath, 'rb') as fp:. Q' C, S) O( J* I. P- N

  55. 8 z4 Q+ P! [1 N. y3 y
  56. return fp.read()
    , g+ ^. G7 v2 w0 w9 j; F

  57. ' s6 ^- k6 q2 p6 \) x: V$ y: A
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    : p  L3 S5 T8 C1 ?. {
  59. $ O0 {  U6 v% l
  60. driver.set_window_size(1280, 727)5 T' }! P9 t) T' k4 k# t+ M

  61. ' |. Z: Q% v/ u; H* W/ u
  62. driver.get("https://youlikehits.com/")5 K: Q% e; F' b7 B7 j
  63. 4 n+ ^. E' K. D' m$ C4 \
  64. time.sleep(5). z* }- b' s, f' T4 _9 [

  65. ! a- x% g  @; S/ `1 t4 V0 v4 {! a
  66. driver.find_element_by_id("username").send_keys('11111') #user$ n$ u/ b( ^1 F, f4 K, I! T) e$ V
  67. 0 q: F/ l5 U5 s' O/ w" ]4 ^3 P' s) {
  68. driver.find_element_by_id("password").send_keys('111111') #password
    ) @; l" L3 t6 q6 r1 p/ S2 H

  69. 4 B+ Y* w1 B% K3 J
  70. driver.find_element_by_xpath("//input[@value='Login']").click(); h' q. P! }. y3 f, L
  71. 0 y5 T% |  E9 i$ g5 h5 `( `
  72. driver.get("https://youlikehits.com/youtubenew2.php")" B1 R2 u0 L' ~
  73. # c; c! x1 {1 O* R& c9 Y
  74. time.sleep(1): Q% l; i6 a8 R6 d1 q7 n  B$ g
  75. " q. w6 M, q5 {2 T% c& U+ ^
  76. #Try Again1 l5 q. m$ ]# C9 ^& @
  77. 4 ]7 X  Y2 i0 M3 ~( I1 X
  78. def checkRefresh(driver):+ H4 N5 y) y, T3 q
  79. & o6 M! h& Y, V1 B7 A- S
  80.         try:
    & {/ a* a& g5 u! P4 U

  81. 2 ^1 O; E% ]) @' ^7 I
  82.                 Refresh = driver.find_element_by_id('loadmore')
    ! t& z# s, R1 R8 d$ c6 i

  83. + U$ c8 h6 ?$ Z. `' ?/ B
  84.                 Refresh.click(): Y% d+ J* v( ^7 O. A

  85. ) D* S, W- m9 s1 n/ G% A  L
  86.                 driver.set_window_size(1280, 727)
    # I: z$ l# U$ m( h+ a( C3 g, W

  87. # B  R% o+ H9 }
  88.         except Exception as e:
    ) y9 N9 B: b  C0 g! ?

  89. & X3 l6 `5 z: J* q0 J  E  w
  90.                 pass
    / k0 O- S" i) ^
  91. $ }& W# k' a/ I/ Q0 o
  92. def checkcaptcha(driver):
    . D8 c" X& a' H7 [

  93. ) {$ G, p: l5 w; W& E! @( x
  94.         try:
    5 x! v0 k5 [9 v6 f$ |" G9 r
  95. 0 y" ~  c; K7 y* r: J$ r/ W! D
  96.                 captcha = driver.find_element_by_id('captcha')9 S8 g: L6 f* E$ C$ l

  97. * d6 D7 n/ h% ]) x
  98.                 print driver.get_window_size()
    ! x7 x: t8 F" H' w, q7 a7 P! ?
  99. ; T- W2 q# L/ Y6 ^
  100.                 time.sleep(2)
    $ E( |' @8 W8 g
  101. - ^+ o2 C: F) a0 ]' j
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    * n- R1 s3 O, B5 e; E
  103. 7 I+ j! b: \6 x9 a3 i
  104.                 im = Image.open('/tmp/screenshot.png')
    1 N2 T- u+ {5 x. K; r6 y# r
  105. 3 l# K0 v) A) M' J' C5 ?
  106.                 #取消headless模式6 S; p  U# }/ T2 P$ A" o; l* I) N
  107. / x; N: S* @' Y* n. r0 |
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)9 M0 x$ b- B3 h/ t& L! t  T4 u
  109. ! T5 a) |9 N. a- P
  110.                 % K3 \, S1 O3 D  Y0 a
  111. & a! v) F& N2 j9 x' i+ `# }
  112.                 #开启headless模式1 E  @1 |2 C# \  X
  113. , Y6 ~8 }, s* W, B
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)$ W7 i7 @; m8 u6 l  M7 N

  115.   v! b$ M+ ]8 c  V; @
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    ( ]1 b8 ~5 Y4 |& G; G

  117. . J. _- R0 M, c. Q* O
  118.                 left = element.location['x'], s7 D( B5 h: y2 n8 E# u

  119. ( [+ l: {# a1 J' O- M& M% `3 K0 ?
  120.                 top = element.location['y']0 f% k; e2 ^( C4 Z. X5 ~

  121. - k9 X9 e8 r# Y' _" h
  122.                 right = element.location['x'] + element.size['width']& s& K$ D& j+ B' x# l) @9 H

  123. 6 A5 p# u% Q$ x+ K. O7 H4 F7 X
  124.                 bottom = element.location['y'] + element.size['height']
    . ^) D+ T; C8 h" _! n( R. b( E2 s

  125. 0 S* c, t. w. `* C. k( k
  126.                
    7 v6 \4 l1 l% m7 o. {( S
  127.   L  e+ P1 @/ i! e7 z! C9 i# e
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    5 B' T( I+ ~. a5 E# y
  129. ; z0 V1 D1 A. ~8 ^
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")4 b9 J; \! b& Z/ }# x
  131. ' P# ^  g* B& P( F
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    / K1 \3 C+ |9 T3 ?/ m8 d2 G# u$ u

  133. * @2 d; ^+ J. F" a5 P- ~: c
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')5 k- o. L: [0 X' P9 l

  135. % q9 x; g: y- s$ q" K
  136.                 image = get_file_content('/tmp/screenshot1.png')' W5 A8 b, s- W0 A$ J6 n4 @
  137. 6 G% \! H- T8 w3 g+ c
  138.                 a = client.basicGeneral(image)
    / L# Y$ W2 j- F" a$ E

  139. 3 }4 N2 V  `7 q; x
  140.                 print a
    * C. Z& K/ L; A1 J0 a2 b- I  F: `

  141. & U3 M# I6 I% ^' M3 x
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    3 x6 W. E; W. W3 i
  143. 7 }5 \" s5 f8 z0 v
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    $ i( S' Q5 R/ @9 l; E5 E, p3 |6 L/ F

  145. , `$ m. r* S8 n( f9 ^& s2 G. y, m6 x
  146.                 yzm = re.sub(r'x',r'*',yzm)
    / y) l9 G5 |0 J% \; Q8 `

  147. 1 h! C2 O# l/ f# d5 [  c
  148.                 yzm = re.sub(r'X',r'*',yzm)
    1 h( Z# g+ C- \- d7 D. S

  149. : }; R: _& ?% w+ }8 I
  150.                 yzm = eval(yzm)- l! l/ P& T9 F. s* s2 O
  151. 6 \& Q" K! J$ P% S! G: `
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/')). c, {3 c0 z0 E7 }* E: Q: t
  153. " X) n* L& r; e6 K, u3 ]
  154.                 print '验证码: ' + str(yzm)& G% h4 O6 n& w0 Q1 w5 m5 s( d
  155. ! D0 n& C  @; T6 f
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    " n' q! _1 d- @8 g5 j2 ~9 x0 j) _) M0 k
  157. 2 Z& y5 R& u0 V) a. j9 L
  158.                 driver.find_element_by_name('submit').click()
    8 ], r% J% B+ y  l) e* m8 f

  159. ( m4 k& ~1 y; L' B5 O
  160.                 time.sleep(3)) Z4 _$ ?3 Q3 f9 F* @) F
  161. 3 m5 \2 s  a$ X9 t# l
  162.                 return 1: ?( C$ s7 h- l& d* c1 a
  163. 1 q8 R- }2 a8 H
  164.         except Exception as e:
    * I/ p4 K+ g" }* y2 f" C3 s
  165. - ^6 N$ z6 U5 Z. n- k" G
  166.                 return 0
    0 G, m( Y. T! X5 F7 k5 \( H! i. c
  167. 4 }: O8 v" F! j: w( T
  168. def followbutton(driver):
    3 r' ]8 S2 ]$ P

  169. $ [4 Y2 A6 a. r: P9 Z8 G  ?  u
  170.         try:
    , `6 y! A1 A0 A% v' R: G% x

  171. 9 n5 n" P  {) O
  172.                 driver.switch_to_window(driver.window_handles[0])  ^5 n  B1 V& e% D

  173. 0 `( k+ H- Z" M3 t1 R1 x
  174.                 points = driver.find_element_by_id("currentpoints").text
    / y0 D. i" P3 Z) g% R7 d7 {8 Q

  175. # @" Z: h% M! \) E( L) Y
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()& s+ P+ ]& z2 K8 s! L
  177. 8 C9 A' ?0 [- q
  178.                 driver.switch_to_window(driver.window_handles[1])0 o' w3 c& x5 R& x8 `; S

  179. % ]/ F# u" p2 N' m9 \
  180.                 VideoSource = ''.join(driver.page_source.split())
    - G- ^+ c1 T. |# ^
  181. 8 T* |0 W% G( h! _- Q
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:8 n/ J2 v3 t' C

  183. % ?, I$ b* s, V2 X- _
  184.                         print VideoSource/ @! p, }8 Q6 V' U4 c* T1 O

  185. ! Y$ l" @/ q, Q. z
  186.                         driver.switch_to_window(driver.window_handles[0])5 i/ H8 w9 O  P
  187. * b+ C$ e4 J# f7 S2 Y) y
  188.                         print "Refresh..."$ _0 m5 L# I' F! a0 T
  189. : K$ X! H/ N3 a' }4 k$ t
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    " X3 h- Y$ H& p

  191. ( e9 w. e: V* _% m
  192.                         time.sleep(1)
    0 W7 J+ H- s- U0 Q& h5 _5 J% n

  193. ) j; @% f% i1 v4 }& f
  194.                 return points
    % B* L% t8 j' {5 @' q+ r
  195. 2 Q( V( ~$ f/ h& T  s+ _; V4 n
  196.         except Exception as e:5 U( H' K0 T. w1 g8 m3 s0 {
  197. 1 G) H2 k7 c" ~0 N
  198.                 return 0( l; G6 W' Y$ ~6 }$ j! J) h
  199. / Z( ?5 U& D2 W
  200. for i in range(0,5000):
    ' u" a: U# b0 Q; N* m9 S
  201. . X: y7 o" a  u. X% ^
  202.         try:0 b/ B- x0 u2 a; j2 B

  203. % ^% Z- p) R; H5 d) n4 z) p
  204.                 captcha = checkcaptcha(driver). l" _- i" q3 l. U5 \+ Q, p' u

  205. ! L' }( x, o, ~$ u# g. k
  206.                 time.sleep(1)
    & k; h# N! G. K0 m3 p6 o

  207. / G/ Q$ E( }4 a$ z- H0 t; x& N
  208.                 checkRefresh(driver)
    8 Z9 [+ x9 p3 k, `6 p4 O

  209.   ?6 n" w: `  K, \
  210.                 points = followbutton(driver)
    5 W1 f/ T/ A5 h. y) R! e

  211. 8 ?0 l6 E( f# q7 s1 Q+ Q0 s; @  W
  212.                 time.sleep(65)% \1 {' L+ ?( A5 `  e8 O  ~4 y4 `
  213. / [/ B- t) s! B, R* h7 J1 c
  214.                 driver.switch_to_window(driver.window_handles[0])
    4 O3 `( I2 Q- n

  215. 7 ?+ t$ w5 N( \
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    - z" M6 c& c7 H8 W, w9 e! p- H

  217. 1 I7 C: `+ [+ k" x3 H2 ]
  218.                 print "points: " + str(tmpp)
    1 ^5 Z3 ~1 |. F) ?" |; y/ g

  219. ; D( [' p  V5 g) O9 V  q8 Y. L
  220.                 if points == tmpp:
      D$ v, P7 V6 {7 G8 K. M
  221. " Q$ X5 ?6 l6 }8 G2 Q5 y& d
  222.                         print "Refresh..."
    $ M8 k. C/ v/ S  k0 r

  223. 2 K8 ?% r# X- ?% L* b' r
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    3 n2 t0 p# h2 D! r4 S

  225. # `# j3 I% n1 f- L2 }
  226.                         time.sleep(5)/ e9 i5 ]+ x4 k

  227. 2 l$ |( @! L/ I3 m
  228.         except Exception as e:( g/ |5 k2 ^8 G; z% `
  229. ( p( r  ]3 }) j+ `5 N
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    3 p( w- t* v: k9 |. \
  231. % r% D. ^( B- m, b
  232.                 print 'error: ' + str(e)
    / E% h: ~6 W6 D( G7 R3 J* ?$ w
  233. + i" r1 O. |& B: X  N; n
  234. driver.quit()* `% C! p1 N, N- |: \& r5 q2 D6 v  A% e
复制代码
1 J; o4 X3 c) h
% Y2 A5 P  V  v7 T
* L' e  y1 w% ]; {) |: O
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 8 \+ s8 u% a+ j* i6 I* p, J
7 A4 {) V- V. i+ h; i1 P

评分

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

主题

1007

广告币

1504

积分

高级会员

Rank: 4

积分
1504

社区QQ达人

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

使用道具 举报

176

主题

1184

广告币

4243

积分

超级版主

Rank: 8Rank: 8

积分
4243

社区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
1 R8 L2 }* C. v, o) ]4 G8 H/ y用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

" s& V9 A; ~6 H" J小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈1 o; v3 ?: o5 {- C( `1 |
7 T0 B3 Y# [/ `: F" {, J
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-1 21:24 , Processed in 0.058228 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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