AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单广告位出租 
查看: 9427|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 5 f( y1 ]9 z( v: s; i

( ~6 n" Y3 A% J+ w3 F" {. h4 S- t3 e9 ]- W% @
  1. + _5 @9 U/ e) I/ c! ]) v& T3 a
  2. # -*- coding: utf-8 -*-' X( t& m3 H1 {7 b/ z$ I

  3. : T& L6 |; q% g; P5 y
  4. from aip import AipOcr
    4 h' C, ~: }0 i9 ], }5 c

  5. ! p" Z; V* Y) K: L
  6. from selenium import webdriver
    $ X) }8 U* o6 i/ D$ O* z1 s

  7. 0 R: P9 L, N- ^) Q& b2 h7 q- z6 l
  8. import time
      q4 h/ ]) Z  V3 z/ w* r% c5 l1 f( ?/ Q

  9. $ x+ f9 A2 T! o7 y' G
  10. import random/ W/ t4 F) \& Y- i' X  q
  11. ; x, N: d  B0 x  z) o
  12. import sys,re: P; r% h( ~+ O9 `
  13. 1 r$ Y7 ^! V, Z% k
  14. from PIL import Image, ImageDraw,ImageFont
    : z9 }' `3 n% t' R2 i
  15. 7 }/ q2 @2 H. e3 U% q
  16. """ 你的 APPID AK SK """$ g( j7 a$ s4 J6 A

  17. 5 t& N8 f& b% D- x; ?
  18. APP_ID = 'xxx'
    . t: I% h( {0 o# i2 |" k" \

  19. 6 y& [+ W$ d/ y! t
  20. API_KEY = 'xxx'
    & j# Z1 r1 F; K3 p

  21. 5 F( h0 ~( v" F8 ?# ]
  22. SECRET_KEY = xxx'
    : i3 i8 n$ A+ h0 T7 K" @
  23. * i& `7 m* ~/ [  b1 F  I0 E$ @' n
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)  J3 _  @, j$ y/ X2 B( C6 a# J8 r" B

  25. 4 N- ]) {% s) B6 X
  26. #PROXY = "127.0.0.1:8118"/ _7 T- @. c8 m. n: B

  27. ! }8 E# V3 y# {) w* C* q) X. r
  28. chrome_options = webdriver.ChromeOptions()
    ' ]5 I: S- f% t' A3 Z0 Y- v& i

  29. ) X: \2 s2 D6 ?6 P6 q9 V/ M  ?4 H
  30. chrome_options.add_argument('--headless')
    0 D, o! x0 X/ @; k
  31. 2 ~9 @4 V* M0 ?' T
  32. chrome_options.add_argument('--disable-gpu')
    6 d4 w* U4 F' t! |3 O9 p0 O

  33. 8 S* r- O# I, M0 ~. s$ K
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    + }3 w0 p7 m" J& Q# }, u% M
  35. 5 |8 w4 f/ M  `% c
  36. chrome_options.add_argument("--incognito")  J$ Y+ ^  K* \. {! C4 `4 w" |

  37. ; q# S. M3 f9 M0 a# L* e
  38. chrome_options.add_argument('--ignore-certificate-errors')8 ~9 q- _% U( R. v) G* X

  39. % ^1 i* U8 L% n6 O$ ~7 q- e
  40. # Win
    5 z4 ~3 Y1 Y$ N4 q" J7 H  |
  41. ) x  w( d( e+ o3 n. h- D& [
  42. # chrome_options.add_argument("--log-level=3")* s- k+ h3 r0 c/ }! o" c7 z- g
  43. ( L; q% M7 H8 r! h
  44. # chrome_options.add_argument("--disable-logging")' {, @4 w% ]" G! }; |" M( T' v

  45. / I: Y0 b8 e' I8 @/ D5 v) Z
  46. # chrome_options.add_argument("--disable-logging"), I! |5 A; I: Q) F. w% C& b
  47. % b% ^! U- `9 I  @3 u: S8 c
  48. #chrome_options.add_argument('--no-sandbox')7 m5 S8 {% U' R) S" z- c; q9 y0 N
  49. 9 q, A6 L7 W- u4 u7 Q
  50. """ 读取图片 """6 j) W* H8 K1 ^4 E0 u1 l' v

  51. ; B& L+ v; @  r  T- T
  52. def get_file_content(filePath):
    5 j, |& g: ~7 P
  53. $ W( A7 F  V2 K- X: ^# N; O% q/ x
  54. with open(filePath, 'rb') as fp:
      [' c( n( L% W1 i9 {, X  `

  55. 9 f" s9 }- s0 t% F3 R7 C
  56. return fp.read()
    * w" @' C* T. H( L$ V- Y! E3 u2 G' z

  57. / N  b+ }4 _0 N& y0 e8 A/ R8 c4 }
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    5 V1 W2 m. w. u2 _4 z4 [

  59. 0 G, ^0 d: d7 r, m$ z
  60. driver.set_window_size(1280, 727)
    % F2 w: j3 v! X$ S2 D# {
  61. 4 e8 o' i9 P6 S2 p& E: N1 W
  62. driver.get("https://youlikehits.com/")' f/ U9 |3 f( J. _) G  n) T

  63. 4 y, q# l# |- f) A
  64. time.sleep(5)5 g: g; e& |% n2 p) h" F/ a

  65. ) q+ Y4 h5 p5 [( h. G. h
  66. driver.find_element_by_id("username").send_keys('11111') #user
    ! g, |+ A% S; c$ k/ G  U& x

  67. 8 s+ `. F/ {+ {( N9 P2 g" I. _
  68. driver.find_element_by_id("password").send_keys('111111') #password! W2 X+ n* P) Q, l/ }

  69. ! J+ X0 y/ c; o7 b$ f
  70. driver.find_element_by_xpath("//input[@value='Login']").click()- I' T* `) C: T# l8 L0 P& X

  71. 7 B: ~- }) v2 ^$ g8 o6 K
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    " r6 l& N+ U0 X

  73. 6 S5 _% A6 h4 G
  74. time.sleep(1)
    ' C$ K/ i0 d5 ^' I* q% y, p- E2 H' Z

  75. ; j# k: u) A3 N4 [2 A
  76. #Try Again
    5 `9 e6 |6 _' `# i9 {
  77. & r" f4 K" A. P: B! R) m: r' v
  78. def checkRefresh(driver):; @& b2 u0 {. E  e/ x& x! u9 {1 ~

  79. % k' S( l9 k4 `! }; t
  80.         try:' ^* {! v9 ?' v: U
  81. 9 h2 s& T3 O8 p+ \; o* n5 _
  82.                 Refresh = driver.find_element_by_id('loadmore')+ C8 `% w* F- H  _* H0 q
  83. + G( \, r8 y) m' p
  84.                 Refresh.click()
    0 b5 B5 @! Z# c& o1 P

  85. , @% O6 A" q+ {* o: X
  86.                 driver.set_window_size(1280, 727)
    2 U, c7 J: Z# V  f) T7 w
  87. , D" k: S/ l3 U) A. ]& \  c3 i
  88.         except Exception as e:
    7 Z: l* G; O5 f; ?: F6 R& o4 }

  89. 3 Q( o; x, e; P! A! {
  90.                 pass
    3 u" Y8 t5 k8 V

  91. ; [0 q) ]3 Q/ s) \
  92. def checkcaptcha(driver):$ P, K2 a+ K6 [9 n& F2 O

  93. 2 Z2 L- F. v1 f# r
  94.         try:
    * e4 Q9 [! w2 m8 {9 U" |

  95. ! {, q7 _2 e& U9 K7 ?; `
  96.                 captcha = driver.find_element_by_id('captcha')0 S  W& {9 ?: k  }7 v3 W
  97. $ Q& E. B2 M0 f1 E
  98.                 print driver.get_window_size()' d6 `) X" W) a$ \& ?! M1 u6 d

  99. ( }# C6 h- l2 Z& d& I, U
  100.                 time.sleep(2)5 w; S9 Y% g1 V' l% B9 i' T  d
  101. # D) H+ d) @( x, [5 v& G
  102.                 driver.save_screenshot('/tmp/screenshot.png')9 f2 [8 o8 {) c( S- Q( X( w; a. d
  103. : h9 m# [* W2 W- F% C2 _
  104.                 im = Image.open('/tmp/screenshot.png')0 S" J$ f0 v& K: v( e# o& c

  105. / N3 K' q; n) G9 ^, |
  106.                 #取消headless模式
    + {! j  C, a# U

  107. 3 R. I! n. E2 B. w
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    , s  r6 u1 a7 K/ q9 {3 Z% U: ]9 b
  109. 7 K4 J; j7 R* v! M* D3 \
  110.                 ) r  B& H- J" I1 y; M+ K$ }

  111. + ~/ y( u4 o0 |
  112.                 #开启headless模式5 n: F, u' I$ n
  113. / ~7 i# ]" a! _3 }
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    ! W6 H1 w# G8 E% A% c/ h4 K

  115. " R6 ~$ U& G/ b! F' k. Q: `5 [8 z
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    3 v- R( e4 M! c( ~
  117. # @) J6 W# `2 r* M, X7 f
  118.                 left = element.location['x']. o# z3 A( {$ j& S" t8 F8 ~

  119. & Y6 v6 w2 L, f" J! g( S" |' a
  120.                 top = element.location['y']0 A! q8 L) }0 r! H
  121. " }- W& j. X2 U: Z2 }* W
  122.                 right = element.location['x'] + element.size['width']
    , ?) M' ~. v& w+ v, S

  123. & r$ A$ w; ^, J* u8 l$ [8 r# G
  124.                 bottom = element.location['y'] + element.size['height']2 H( f. J" C0 m3 O* A/ ?: X6 Z

  125. . H# G( ^8 A+ {% h
  126.                 0 O0 l2 ~4 s; n& |
  127. ( N6 _8 l; m4 Y4 S7 l' Q6 R; O9 U
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    , W. {, ~0 z/ L+ S) f
  129. 6 j/ `9 l7 |( E1 `- G+ ^0 @
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")( I; R. p* c% x

  131. 3 [- N) C% Q4 J1 r) ^
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")$ T( G9 Y8 }  K' I7 r: U) Q9 s
  133. 8 X# t2 n9 Q0 M7 N, Q) f0 D
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    : t9 z* y. ]3 O, P
  135. 5 W' b3 D, ~  c" Y
  136.                 image = get_file_content('/tmp/screenshot1.png')
    # R+ U5 W' s, K! N
  137. 0 E/ J1 \  w" F3 l2 G% r* z: i7 L
  138.                 a = client.basicGeneral(image)( O% g# q+ _6 M( B

  139. ; w+ `" e, G' N, Q+ \$ f& k5 x
  140.                 print a
    7 M4 e$ a* d( h" Y7 w
  141. " w. \* [$ W3 _) H! I4 `' j6 K
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    ( f9 W4 r$ H2 ]8 B3 W- t1 w: I) n

  143. $ q$ g$ ]0 p" k5 _+ K6 m. P# M: O' F
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)0 H5 [  }. J( y' M
  145. : N+ b2 |3 h1 {3 d3 g# C
  146.                 yzm = re.sub(r'x',r'*',yzm)
    1 M/ U0 t6 i- q7 C: q# u* p
  147. ) P6 b6 X& \- h
  148.                 yzm = re.sub(r'X',r'*',yzm)7 Q8 Z6 C/ M- r7 N& h# U7 ^" F

  149. ) b  x4 W6 r4 M; F7 ?
  150.                 yzm = eval(yzm): d# M1 ~+ s* e8 }, Q

  151. # e( ~0 L- G; ~; z. r% I
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    ' C* B- g4 ]$ y" ~, t1 Y" q3 N

  153. 9 U- N& d! Q' }' v1 `
  154.                 print '验证码: ' + str(yzm)9 g5 `3 e, H6 I7 Z% Z0 `
  155. # L3 q; s7 {$ U1 o; K7 Z! m$ E; z
  156.                 driver.find_element_by_name('answer').send_keys(yzm)9 B9 f$ D& [% [
  157. # P' M& @# ^3 ^; k0 K1 v
  158.                 driver.find_element_by_name('submit').click()/ p5 \0 s& W& V7 |) X
  159. - x# {4 y, b  D
  160.                 time.sleep(3)/ [0 M( b9 M2 R' w' b1 L2 t
  161. . e! J& w9 O  |0 u
  162.                 return 18 Y) c2 ]& ]- m2 i: X
  163. ( Z" z4 \9 ~' Q
  164.         except Exception as e:, \2 E8 P, o* I% P+ J# D. u

  165.   r( X, D; D/ `) d
  166.                 return 0
    / W7 L$ A. F) W4 U) l
  167. 4 u, s8 L1 A7 C( I$ Q
  168. def followbutton(driver):
    ; R3 L0 X1 G% `9 V3 j

  169. 7 p% F; Z7 |. [: h$ W
  170.         try:1 K# l" q) e- E+ m
  171. # T% J/ l& z6 u; B
  172.                 driver.switch_to_window(driver.window_handles[0])3 ?6 e1 ]4 N/ K% O; }0 M, S* k8 a
  173. : ]- X! p) ]; y: Z4 h8 \" e! @
  174.                 points = driver.find_element_by_id("currentpoints").text% r4 j( N. z: h4 R. T4 j  t
  175. 0 r& ^9 v9 Z$ Z2 x4 a( j
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click(): k; I/ z: [- z+ s; N" Q
  177. ; t5 v( E8 v+ R2 \% F
  178.                 driver.switch_to_window(driver.window_handles[1])
    1 S) \& l' L* W! M% q' }
  179. ! g# f: _! E! z$ B
  180.                 VideoSource = ''.join(driver.page_source.split())* k3 ?) b' n! h4 x( A

  181. 7 g$ j- u9 I* q3 Q) ?# T
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:. X/ X: T+ m* F

  183. 5 Y/ k' Z  g  S8 f% h; F
  184.                         print VideoSource
    # T: z! k) [) k. P. [
  185. 0 ]: M7 \6 V5 Y( |! i4 g8 K2 x2 r
  186.                         driver.switch_to_window(driver.window_handles[0])
    & D% d4 C8 `  X  P. e# A
  187. 8 K" J% _# q! ]0 i
  188.                         print "Refresh..."0 j8 Z7 a) G4 J/ |
  189. 8 H$ q: e  u0 H' k6 ^
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")0 [, t4 N3 `5 `
  191. , {1 d; y5 p: p  l0 Y+ U
  192.                         time.sleep(1)* @$ H! [" |8 s5 d: x

  193. ) q4 l/ _+ u9 _# j( w' P
  194.                 return points
    . e2 n+ G: {- L# i  S% Q6 G
  195. * L6 g; |. g. \: I9 g) Q6 A
  196.         except Exception as e:
    " z' \- ^+ ?: A" [- {2 d

  197. ; J& n: S8 n6 Z( E% E
  198.                 return 05 P7 `4 N, P' ^$ Y9 S7 ^) e2 s* m
  199. 2 Z3 c1 R: V7 n, i  j
  200. for i in range(0,5000):
    0 C; a; G! y2 U7 Z

  201. $ \1 _5 y. R; B/ O9 `
  202.         try:
    0 W, T. y) _; ]+ l$ C

  203. ( \; J4 h( {, @1 o4 U' S
  204.                 captcha = checkcaptcha(driver)' c. }3 {) n4 n- P8 [

  205.   A9 V4 J' @# a
  206.                 time.sleep(1); {! A/ [- u" G
  207. 4 f# o  ]3 f5 T# A( k
  208.                 checkRefresh(driver)
    0 W* p" k- ~( y' e8 P8 h  O

  209. 0 F3 g  {; _$ @
  210.                 points = followbutton(driver)
    + {: K$ ?0 i, q' s# ?, S) h

  211. / h+ _0 m8 K( x" w7 M9 v) |
  212.                 time.sleep(65)
    9 ]) ]3 u# ^+ L) K1 l1 S
  213. / A2 [: v+ ^3 u  R! m
  214.                 driver.switch_to_window(driver.window_handles[0])
    2 S) T8 ]( A2 `- B, T, {) M1 n6 i

  215. 3 a) ^6 Q/ V, U  D6 \
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    & q! Z! V$ K" g7 O2 A

  217. ' F; @; ?9 A& N( M1 S- A5 L) h( b
  218.                 print "points: " + str(tmpp)) H- n! ^& T" s
  219. . a8 [$ S2 \. y+ Q: a/ w7 s
  220.                 if points == tmpp:2 V3 K: j$ n. L6 `

  221. $ O3 k2 y# T" Q! P
  222.                         print "Refresh..."
    2 L' B- ~7 m2 q" B+ d. e5 t
  223. ) q+ a; n0 j7 E  A. S
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")% R; b5 i4 R; m2 C) M

  225. " W2 z9 Y  ^0 ?3 O6 f( @+ W
  226.                         time.sleep(5)# o0 A( i% h( N7 _: a5 V
  227. 2 D* a7 [7 |# O+ _4 P
  228.         except Exception as e:
    % Z( `* y- v; ?0 G$ J9 i
  229. - S- A' y  U% S; o' J
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")4 I+ |+ p3 B2 j# @7 ]  D

  231. 6 C6 U/ X4 T: K4 |( O( ]
  232.                 print 'error: ' + str(e)8 \; W- H7 r' T4 {, K
  233. ! m, F" b9 p( a, ?
  234. driver.quit()
    : Q5 t) Q# L; B. p4 W# O9 e
复制代码
6 h9 }  J. x! L- b6 n

% ~6 W( A& F- z9 s1 U" h5 R5 f2 ~* ~9 O, M0 g/ I
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
1 I0 c# M" z9 ^9 l  s6 f: w8 ~4 [7 q, u: W. w& m3 t

评分

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

主题

166

广告币

246

积分

初级会员

Rank: 2

积分
246

社区QQ达人

发表于 2018-9-1 20:51:05 来自手机 | 显示全部楼层
大佬太哇塞
回复 支持 反对

使用道具 举报

9

主题

972

广告币

1469

积分

高级会员

Rank: 4

积分
1469

社区QQ达人

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

使用道具 举报

176

主题

1051

广告币

4107

积分

超级版主

Rank: 8Rank: 8

积分
4107

社区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:118 I$ R* m% u8 [; s+ r. {
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

9 b) U2 k& C$ S( L7 {小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
( I4 d% |' n1 u2 f0 s1 U) g+ G5 Z4 R
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 04:11 , Processed in 0.049755 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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