AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Propeller Ads
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G需要代理IP?⚡️Proxysites.ai⚡️指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
FB BM不限额,短id账单户E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)9Proxy ⚡️ $0.04/IP, 无限带宽 IPCola原生住宅IP⚡️$1.8/条双ISP
Google、Bing官方总代  联盟流量开户fb耐用号0.01一个fb账号官方合作商FB资源,账单户,分享户,国内一手
FB企业户BM户账单户源头收FB代投工作室,收TrafficFactory账号IPWO全球住宅代理⚡️免费测试⚡️FB海外三不限-户源多 费率低
PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心多币种虚拟卡,消费享高额返现广告位出租
虚拟卡返佣1%,国内持牌机构   
查看: 9946|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Lemft
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
( C& J$ E3 j: h; I) b) N4 q. \" x/ C& n

* |' j& _* r$ W

  1. 0 n+ a! u: ?) P' E2 s$ |; V
  2. # -*- coding: utf-8 -*-5 r8 t4 \) B, x' Y1 |9 k
  3. , D( d' w( G+ i8 V0 E
  4. from aip import AipOcr7 v; j; h1 h7 p1 x$ s  k

  5. ' F( z( s6 H5 m
  6. from selenium import webdriver; E. c3 R3 }$ ^3 G
  7. , T8 Z  K6 e3 E0 J# U1 a
  8. import time7 x4 J9 H4 o# P$ d  C
  9. 0 ~1 |9 V! Q6 f& J5 ]+ Q& g
  10. import random
    / z! k' z/ v9 T' P6 _5 ^) Z
  11. - a6 W  J8 h( O+ k  k3 s6 r
  12. import sys,re/ G3 m1 M* G: i' L, |/ j& Q" h4 b

  13.   j' h/ ?  _) v# H" v, J, R1 n
  14. from PIL import Image, ImageDraw,ImageFont
    5 B3 a$ ?; |" q1 t# \
  15. # s$ r2 |$ a$ @9 n, K4 Y. \( L
  16. """ 你的 APPID AK SK """
    * L; {/ P( w& V. _% N% q( G) X8 c
  17. - u, L- K* O. E  m7 F
  18. APP_ID = 'xxx'
    0 V, B4 h% l7 a. A! e

  19. , h3 v; t! F, i. N/ Q7 C! h& F
  20. API_KEY = 'xxx'+ ^" K7 L) f- T/ t: d# i

  21. + @0 ~: X/ M5 x/ r  M
  22. SECRET_KEY = xxx'$ U5 C& L  e8 L) ^; c) x

  23. * w4 S! ]5 ^8 J2 t6 h3 l
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    + y1 G: q! T, ]. K' O: P, u
  25. % |! T! N( r1 M% p! t1 J
  26. #PROXY = "127.0.0.1:8118"
    . T% Z9 {" p" X- y7 B; H
  27. : p; U4 Q3 e/ {  {- L
  28. chrome_options = webdriver.ChromeOptions()5 e! I. g9 i& N
  29. + I* z$ v2 T: ^/ d& z& i
  30. chrome_options.add_argument('--headless')
    ! K- D: b; M( B: s; r" A
  31. " d' p2 H3 X1 G4 X
  32. chrome_options.add_argument('--disable-gpu')
    ! C8 G) J' y8 |2 ^4 I
  33. 6 D2 B6 X6 q$ j$ G! d. X
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)" p# m, Y2 U6 O# X" ^. l# d

  35. 3 |5 k& R% E; \8 ~: ?4 X
  36. chrome_options.add_argument("--incognito")! ^0 Q5 a3 [) e% S3 U# I* E
  37. 6 s8 z) j' @" c) C9 Z; P, ?) S0 l+ Z, d
  38. chrome_options.add_argument('--ignore-certificate-errors')/ p6 U9 C# A( V$ ^. H* _

  39. ( G4 O9 Y3 Q( I- n" O& F9 X1 G6 A3 |
  40. # Win
    3 I) r# e: Q: n$ J+ k0 j1 s: f7 h- n

  41. 5 Q. ~, M: b( h
  42. # chrome_options.add_argument("--log-level=3")
    : a0 ?: k  |) [" l5 \
  43. ; @5 ?* {1 W' G3 x* t! x0 ^3 G$ B
  44. # chrome_options.add_argument("--disable-logging")* b: S/ j6 k2 D: A+ P
  45. 9 k0 c7 ^2 \/ B! u
  46. # chrome_options.add_argument("--disable-logging")+ k5 N( W) T6 ?* L/ y' @
  47. 6 z- B2 u1 k+ }3 L( K
  48. #chrome_options.add_argument('--no-sandbox')
    $ _0 _! d7 R) H! Q
  49. % G' u# G/ U: q4 C5 J4 x
  50. """ 读取图片 """0 e5 A! x5 ~  f& Y3 v( {  k
  51. : p* S6 C$ H, Q" d& K+ @
  52. def get_file_content(filePath):, ^' ^- U- H4 z, R+ L$ f
  53. 2 N: Z, V' m, L6 ~) ^; n
  54. with open(filePath, 'rb') as fp:
    . o7 [% S* i6 x5 w
  55. 7 A; E  Q5 m" P1 a/ d2 Q  g' R; a; F8 l
  56. return fp.read()
    & b  o. E7 Y1 t( y9 \
  57. 8 r/ l% G+ X. N: d& m
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    8 m! y8 j3 u( N. g( a% [

  59. ( L0 K- j) d8 W7 _
  60. driver.set_window_size(1280, 727)
    % w3 g7 V9 a( l; m+ V& ^
  61. " E! a9 I. z) {
  62. driver.get("https://youlikehits.com/")9 t! d7 B: v; r5 D

  63. ( M5 e( ^* @1 \9 k  M$ y
  64. time.sleep(5)
    - D- u/ i/ m& M
  65.   i$ O; P4 `- }# M1 E/ d1 g
  66. driver.find_element_by_id("username").send_keys('11111') #user
    ! d' i( x+ f7 q, y' ~% o
  67. 5 I+ o  }; Y) ^# S
  68. driver.find_element_by_id("password").send_keys('111111') #password
    3 ^) W1 R7 n# Y9 R" ^" B
  69.   x: z: m! I; h! X+ k3 j) g) L
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    # N. ?5 Q6 q: C1 n  |

  71. $ d, T5 S# d: K, T, L6 f6 |
  72. driver.get("https://youlikehits.com/youtubenew2.php")/ D, m4 c7 t( r: e4 M: s

  73. 5 d  l, V. n, y9 ?' I1 F' E
  74. time.sleep(1)
    % u+ v% i0 Q/ Q0 T7 z, B

  75. # j7 r  _* M# ~$ u3 f
  76. #Try Again
      n- {( F& _' g

  77. 9 S, I6 n; P6 t5 d
  78. def checkRefresh(driver):
      j& O  H  E; g$ H3 ^* E' o/ [

  79. + ^2 G, }: `: \+ {1 N
  80.         try:
    / K# w, c1 N) Z! d4 ]5 d

  81. ! g! y' g# h" q9 C( n% Q; E$ [' D- A# l
  82.                 Refresh = driver.find_element_by_id('loadmore')
    3 b* o8 |% s* {$ T( C; Y8 q) y

  83. ; `7 E$ o6 `+ ?7 D5 i  C
  84.                 Refresh.click()! W! z  ~; f* U: a: Y7 O4 p
  85. ; ?0 p& h/ K& E6 t
  86.                 driver.set_window_size(1280, 727)
    0 e. T. G5 D: u- ]) l  O* Z

  87. 0 Y; s1 }6 ?) Q% T* c9 o
  88.         except Exception as e:3 v$ d9 d4 ]8 e: S* O) @
  89. - y, W* V2 s! f# l% a4 K& q
  90.                 pass
    5 W2 N1 j8 `$ Z- Z. o7 b
  91. ) a# O. z( u( r3 K
  92. def checkcaptcha(driver):/ a% E1 u4 {8 s" _

  93. 8 x/ _5 D8 l+ Y0 N$ S, N- y
  94.         try:. v' I/ s, L1 |' d' y# S. _

  95. * V2 x! x( A. _  ]$ {( E/ J
  96.                 captcha = driver.find_element_by_id('captcha')* j, m/ U4 A4 W% K: Z: r

  97. 6 _# n- E& V9 \8 ?! k# h5 m+ t
  98.                 print driver.get_window_size()
    ! }5 b5 P. Y6 J: }6 o1 y, \

  99. * ?: r' n0 F# m) J
  100.                 time.sleep(2)/ r% A3 I3 d- V; s4 K3 D% D

  101. - W+ F) `7 z8 b- T
  102.                 driver.save_screenshot('/tmp/screenshot.png')# j0 q1 [7 o. z# U* |
  103. , b2 i; m1 G/ O
  104.                 im = Image.open('/tmp/screenshot.png')
    $ d! d) [0 g/ f  X
  105. 8 t, @0 Y5 `6 Z7 g. P2 F5 T# h# ?6 X
  106.                 #取消headless模式
    5 @( a4 M7 ~" n+ M( K+ e
  107. 1 A0 V2 {; f0 L- g1 C
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    2 f! X$ k& [% R! k& ]1 r6 N! ^) ^

  109. 8 ]; y6 \5 s% g, k: L& f  R
  110.                
    7 `# w" `" ]2 u7 h
  111. : h$ E, L9 y  c2 N1 H* o
  112.                 #开启headless模式
    ! X5 D: Y8 O. h$ a0 M' P' z6 g+ _

  113. ) g1 s4 h/ N% p
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    0 X2 _0 L  g" t+ z9 L! w* z
  115. % [7 ^6 f! s+ Z( L
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    4 ~0 g1 M! o* D3 |+ ~& T% }

  117. 6 l0 s% K! w0 X" _6 D
  118.                 left = element.location['x']
    ; b. A) ~$ ~% V- M* o

  119. . B% R( D' _7 f& m/ G' \
  120.                 top = element.location['y']' t" q5 O  U: j8 I5 p! a: x! v! z

  121. ; J3 P5 G+ i( y& I( [; Z
  122.                 right = element.location['x'] + element.size['width']$ z* x( ]6 W5 a( I+ P+ W5 b

  123. + S' M( f8 Y2 Y2 R
  124.                 bottom = element.location['y'] + element.size['height']
    1 d1 y0 F0 ?7 R9 Y

  125. 0 J9 B4 t9 L- ?$ ?  W2 O
  126.                
    5 X) E. X! p/ ~. D% S% Y

  127. ; m) c& K6 O' _8 F( h: G& j
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")% \7 U2 M% E$ G/ x9 t
  129. 1 |" g7 l4 h% T% p1 K
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    . ^/ [* H2 ~2 N2 J0 F. w% W
  131. , w8 }* f2 J2 B% f$ Z9 T6 L9 b
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    " S; X% Z: P# z. v
  133. 0 S1 x0 ]6 C. x- u  L: d, b5 S
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')1 N1 L: V3 K* C% u8 V
  135. % o. v# P1 i, C
  136.                 image = get_file_content('/tmp/screenshot1.png')1 ?& p6 V3 a* x/ ~$ O! Z( n+ T
  137. ' T! x. H' e" O  P2 s
  138.                 a = client.basicGeneral(image)
    $ z" T; j0 ^5 y, t. r
  139. - m, Y9 B1 {6 k$ a& |0 T- k
  140.                 print a! N4 j' g: n* @. }8 V9 \/ G
  141. " d4 H  h0 g/ d$ Q
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    + M8 ^# U+ P3 _
  143. ' _. r) A2 \2 t* o% A
  144.                 yzm = re.sub(r'\xf7',r'/',yzm), K% u( ?% |+ |( u6 T9 Z) x) L& `5 g: `7 e

  145. . }* F; f5 _6 z
  146.                 yzm = re.sub(r'x',r'*',yzm)( X1 W+ s8 m6 ~8 h+ I9 O
  147. & r+ n/ x1 D2 ?, T: z# Y
  148.                 yzm = re.sub(r'X',r'*',yzm)
    $ V6 k: A0 M$ V  x1 _0 Q7 a

  149. 3 t- Z! X* H1 h# Z4 ]" S5 O
  150.                 yzm = eval(yzm)+ {/ K9 K. U1 G# r" i! P

  151. 3 Y9 [4 B, x; g! [/ h+ ^0 N$ ?
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    4 Q" G- G2 ]4 \( R4 E' {, v
  153. . ^2 L$ L. o& x9 A& o
  154.                 print '验证码: ' + str(yzm)
    7 n: c7 _  j" ]4 e/ ~1 S9 h
  155. , }) f6 F+ T3 D* I1 A/ |
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    , I! A+ I3 ]# `
  157. - n$ M* F( V- a& ?9 V+ ]; V4 _: J
  158.                 driver.find_element_by_name('submit').click()! f  ^) R0 u$ h3 v, t

  159. $ [- `  }" H- R1 l; |
  160.                 time.sleep(3)# V& R  o! j& P4 I5 \
  161. ! I* |! t2 y7 G7 s% B! y2 ?9 W6 v
  162.                 return 1
    6 X2 r& @7 U# z# R# h+ Z1 q
  163. * J$ H- @% V% m* ^: B
  164.         except Exception as e:8 a8 j3 L  C$ i! X  G" H5 a

  165. 2 Q  ]. X; f. w- F4 X. q
  166.                 return 0" c5 @. o* D/ r- H* E* D# e
  167. $ c- a6 l" ^$ x! ?2 Y! N
  168. def followbutton(driver):0 I' U! y2 X' x2 {2 T2 R! f8 P5 O

  169. / l6 s! I6 I7 N
  170.         try:2 b/ k2 e2 l% A3 p

  171. 6 W: X/ B: {( H6 _( I# a
  172.                 driver.switch_to_window(driver.window_handles[0])
    - C, X/ m4 h" k3 p: D- q6 ^( U

  173. 1 }' @' M7 \9 s5 `% f
  174.                 points = driver.find_element_by_id("currentpoints").text6 ~" Q4 n2 S1 N
  175. & A/ q& S8 F% z- ?$ K
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()) r3 i8 ?- @6 O: }0 c( M- a+ ]
  177. $ T; e  B- r; |" Q% o# V2 ?9 r& n6 o
  178.                 driver.switch_to_window(driver.window_handles[1]); @! m$ j2 h+ G. e5 l
  179. " \) j4 Y7 h( x9 r
  180.                 VideoSource = ''.join(driver.page_source.split())" }! P: l% O  Z' @

  181. & @/ z) P1 I+ r4 b4 E( e
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:+ e! r: c; j, {5 @- a: @7 ]  t

  183.   G  e, |9 l2 c) w6 x6 C* O
  184.                         print VideoSource6 e9 s6 n' c8 L3 o* y" V% x
  185. # A- ?- ]/ V3 r& }( n1 H6 K% d
  186.                         driver.switch_to_window(driver.window_handles[0])
    3 H9 l; Q9 A2 ~# ^6 v, D) [/ ^: C

  187. 4 M) @5 J) E9 o7 |! R
  188.                         print "Refresh..."5 _0 c; ~  X  y
  189. 9 p" Y6 h" `; l/ z! d
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")5 v4 f, h5 X% l2 K$ X. c, }

  191. 1 u2 G; G( R" R
  192.                         time.sleep(1)
    $ K' B+ V5 Q  G# Z- U
  193. $ L5 ^" K+ Y8 M7 i
  194.                 return points
    - Z' W& Y, q# E! m! b7 B* `
  195. ; ?6 `- k2 Z+ v! U7 u1 |# ?& c& U& b
  196.         except Exception as e:. p) x- o( f; s; o' F5 T' m

  197. # m/ T1 a( y" e+ K  L
  198.                 return 0$ w5 X* B9 i  ^* w
  199. 9 F5 U8 S6 ~& b- z9 ~
  200. for i in range(0,5000):/ k' C$ h+ U- s) _
  201. 5 N' c+ ?$ W; ]" O+ H# K4 S
  202.         try:! `" g% d# G+ a: A, {
  203. $ L8 Q8 s- a8 E3 P
  204.                 captcha = checkcaptcha(driver)8 W, @( g2 D! D% W# @

  205. 6 k& V- V+ B7 D3 O3 E! H
  206.                 time.sleep(1)$ d  [9 v% |1 o, v& @8 Z
  207. , E# c+ y$ p" g0 p1 }
  208.                 checkRefresh(driver): d& e1 P2 y5 |; ^

  209.   o& ~2 I" o9 o* x: {8 ~# E$ e5 |
  210.                 points = followbutton(driver)
    + [# p5 Z9 A1 N& n9 T- u4 A

  211. " i9 {. t1 _+ q0 U; b7 r$ Y
  212.                 time.sleep(65)
    - h5 u5 {- N. P, \3 G$ i4 O" L# h

  213. / C2 o* Y/ T1 b. Z2 K4 Q* O' D5 ]
  214.                 driver.switch_to_window(driver.window_handles[0]); ^) X7 L, c# v9 G8 |
  215. & m8 L3 o6 v2 ^: _
  216.                 tmpp = driver.find_element_by_id("currentpoints").text( P" Z5 M3 E8 T# I

  217. & t: X' ^. a/ Y
  218.                 print "points: " + str(tmpp)' `. ^- V* N- y" W
  219. ( S! R; X/ I6 ?2 s: }# F( Y% P1 F
  220.                 if points == tmpp:, [  r6 V2 E( s

  221. / z3 }3 {' n, t* v$ O0 U0 D
  222.                         print "Refresh..."1 X% l0 C" @8 b; t

  223. 3 {& I. w; f+ D/ {
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    & C0 z# K7 }1 ~$ A# w, O' |
  225. & G# {) m; o$ T+ i
  226.                         time.sleep(5)8 z  I0 }% S6 t2 Z
  227. 1 v3 H: n- o: z! ]$ h- F
  228.         except Exception as e:& L2 A5 K1 q7 t& |% A; p0 t% l: @
  229. 3 b6 R, v7 s5 o4 W4 J/ M" r
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    . l# T# [" U6 O( P' j6 x  I
  231. $ V1 ^! ?9 K. {# G+ f& ]4 ]" ?7 J- b
  232.                 print 'error: ' + str(e)
    : {, ]# p4 p3 h

  233. 9 s) r' H8 q- K" f2 m
  234. driver.quit()
    2 y+ l5 ~; G6 A0 G
复制代码

4 Z5 W; k& R* a/ O% i) e7 N: W  R+ X' J# F* ?+ o2 x- U1 d
, Q3 w& m# B4 T% U2 C5 y) F/ g& h3 K
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
* R! \! [, J# P9 S- t' F  T5 a, z( a- Q' L" t# r

评分

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

主题

168

广告币

250

积分

初级会员

Rank: 2

积分
250

社区QQ达人

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

使用道具 举报

9

主题

986

广告币

1483

积分

高级会员

Rank: 4

积分
1483

社区QQ达人

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

使用道具 举报

176

主题

1106

广告币

4164

积分

超级版主

Rank: 8Rank: 8

积分
4164

社区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
  |, N) I  f* i- t用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

- {3 ~% o6 I. l2 @小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
, n! P! X: L  v2 m7 B
. Q) J  C) D- h, u+ s% S
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 16:03 , Processed in 0.058117 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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