AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 : E" E$ f2 f8 P  D7 i
+ f7 Q2 _4 S7 t3 c+ _( l
; l* f' K2 O  U( m

  1. % D" p+ i; [) H* M9 O( k
  2. # -*- coding: utf-8 -*-
      j/ `3 \" c) E

  3. # m7 B1 L0 u+ I2 S# ]% O$ s! a
  4. from aip import AipOcr
    " c2 r7 Q2 y9 B+ a! Z! l' n. w# O
  5. , H, g6 G3 e$ P7 k  X, d: ^
  6. from selenium import webdriver
    # O$ u1 P/ z  e! m
  7. ' Z6 e4 E0 W) {5 Q7 u$ E3 X
  8. import time; Z7 `( ?8 x" S- |
  9. # R( L9 c, h1 f$ }2 n
  10. import random5 `! }" l9 J+ K/ ?2 m

  11.   k! x2 y* I3 R
  12. import sys,re* w# M, `- C& }
  13. # L2 R: ]( Y6 Z6 t% t7 b
  14. from PIL import Image, ImageDraw,ImageFont6 N1 J8 m4 ^; s& @5 N3 {

  15. 8 m( e5 b7 w7 h8 X; T+ I2 ~3 w2 k+ d
  16. """ 你的 APPID AK SK """
    ; p, p$ o4 [+ c$ S9 \  t$ x
  17. + |2 E' j7 {* `
  18. APP_ID = 'xxx'; W. {5 F; p4 A6 S3 K
  19. & j4 N2 W8 ]- c9 B( S3 f1 b
  20. API_KEY = 'xxx'+ v: j3 d6 i* U$ P! R
  21. # y% u4 R2 a$ P5 a
  22. SECRET_KEY = xxx'" T1 z' A5 {' S; ~# T! s3 ?  @

  23.   y4 @9 e  M8 U/ I- P2 _+ C' f1 T5 ?
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    2 R) x2 u; m  m
  25. 5 S: e7 U/ n; v9 y
  26. #PROXY = "127.0.0.1:8118"
      @- c1 h9 h/ S( V7 X! D; k/ ]8 n
  27. , ~- a* ~/ E$ f" D/ \) g
  28. chrome_options = webdriver.ChromeOptions()
    ( ^3 I- D6 s; w- k% C. Q
  29. " i0 W3 z& j1 a9 E& q- j3 Z
  30. chrome_options.add_argument('--headless')
    0 H* v' p" B2 a+ k  O* t. ?

  31. . k( v6 j' T$ c$ O, m2 Y/ `
  32. chrome_options.add_argument('--disable-gpu')
    8 X0 Z2 v1 x$ ~$ h' Q
  33. 0 b' e8 ^+ ^$ k: e9 `  \
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)" F6 m" Z) U2 ?" ^/ Y+ U

  35. * m7 V7 d( k* n' G2 t
  36. chrome_options.add_argument("--incognito")& S0 x# l8 @7 _# F6 t7 J3 F
  37. - D. _2 ^4 J. S( b
  38. chrome_options.add_argument('--ignore-certificate-errors')
    ( t" c1 j/ d7 R

  39. ) X! _) c4 ]) P/ x$ j2 h" ~
  40. # Win# s5 Z) s; I$ C& p

  41. 4 |7 C) w: D- I8 Y' y9 g
  42. # chrome_options.add_argument("--log-level=3")% P7 Q0 N  q" ^1 g* @4 P0 h+ f
  43. ! Z- [8 w6 R, r
  44. # chrome_options.add_argument("--disable-logging")
    2 N" j2 e4 n, [: s( K2 V7 U# o
  45. 6 j$ n* I9 L8 j( k/ c* o$ m; j
  46. # chrome_options.add_argument("--disable-logging")
    $ X* a9 a# v1 i8 H" w* F& [
  47. + x( P/ y) e: A- [( |8 p
  48. #chrome_options.add_argument('--no-sandbox')
    6 [. [' |, M9 T0 m5 V( x
  49. 4 n! z- j( Y" |" w
  50. """ 读取图片 """8 R8 m% o$ Q4 d8 m) F( v- j% L

  51. - `3 N) }: z6 |; i" s6 y
  52. def get_file_content(filePath):
    / F8 u# o% |% z( b

  53. / v$ b( Z1 V5 f& p+ s8 ~" X
  54. with open(filePath, 'rb') as fp:+ n3 T7 p: e( O, S- V
  55. / R: b  l( m% T( Y, A
  56. return fp.read()% `- u: q: c8 k* A% w4 z3 Y& `
  57. , E3 f" c: L* r
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)+ y" T% s% Y1 T6 @

  59. # Y% L# ^% p% c6 n* [
  60. driver.set_window_size(1280, 727), Z( h( h1 i: T) E& r3 u

  61. 8 b8 [9 c$ W; J% x/ |% J6 t/ H
  62. driver.get("https://youlikehits.com/")
    6 ]5 }& M3 e- m# N0 N
  63. " r- p% p" ?; Y8 b/ y
  64. time.sleep(5)* l$ e4 [; Y) S  u

  65. 7 z2 a$ @1 x" B' Z
  66. driver.find_element_by_id("username").send_keys('11111') #user
    4 B/ R# f6 @$ I$ }% o" N5 o+ x. s
  67.   c! u7 L) ?! z6 E1 C7 B& X
  68. driver.find_element_by_id("password").send_keys('111111') #password* f& w: k; s0 C6 S

  69. * Q# t  J3 B( y# D  C; g& a
  70. driver.find_element_by_xpath("//input[@value='Login']").click()& d( U0 w6 x8 J8 |$ V& ]$ x7 N
  71. 2 M3 K8 A, B- g" |: y% {; j
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    $ ?' u8 {! S+ M( t7 m( t* [
  73. 7 ^# }: F; a( P4 h
  74. time.sleep(1)
    1 g0 c7 {& M3 g% R% b* G

  75. 1 |2 l( [, q# j! |! y
  76. #Try Again
    & A9 F: f1 p% ~& @) o+ g
  77. 1 S3 J' R5 _" U0 u& S- `
  78. def checkRefresh(driver):% z% B- x; @2 a; q

  79. 3 Z# s# {8 @- g$ r0 ^, A: [
  80.         try:
    * m, A7 Z2 q& q# [' o' k

  81. 8 @+ ]: V) }5 k; s. B- q: ~- X
  82.                 Refresh = driver.find_element_by_id('loadmore')
    7 L  E. i: a$ A( w
  83. - W' n1 @  V: L2 w  Z  G
  84.                 Refresh.click()
      m: e8 z( o9 {: _2 \0 M. \2 @
  85. / D# l1 {0 |4 s* [" S7 R8 C6 a& }
  86.                 driver.set_window_size(1280, 727)
      n! q1 C6 J7 Z) F7 W
  87. 9 x! V8 _  V2 f9 O! c& _
  88.         except Exception as e:# x1 w% F( X- X6 ?" L4 D

  89. 6 K% A2 U1 {2 n& g" R' d
  90.                 pass- P6 a7 O- k2 h4 i' L. [
  91. # Y# ^3 L) u0 S2 E1 R
  92. def checkcaptcha(driver):& _$ q! m8 R! N$ r
  93. * H  }( k1 `$ B. F6 D' G' O
  94.         try:
    & g9 u% Z/ I. m* x% L! J1 K
  95. 0 R& \7 ]. L" N5 _- l/ U
  96.                 captcha = driver.find_element_by_id('captcha')* I, ?- ~& v% o3 u9 T
  97. ' [" a! x& u0 ^
  98.                 print driver.get_window_size(), k! F) ?  }5 y5 U3 U4 f

  99. ( V6 ]5 n5 k! H& U. H3 m/ p
  100.                 time.sleep(2)
    ( q- P: i# ^. }, E1 [. W' u
  101. $ Z4 G& W, ^& Q
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    ) ?8 X- \& w. b1 M% a/ D6 t; e

  103. - r& }* b( f) b6 n4 E; K' r
  104.                 im = Image.open('/tmp/screenshot.png')
    : n' W/ ?- B9 ~  v
  105. 0 w; g; e# D, A' G: V
  106.                 #取消headless模式: z1 Q7 p0 z$ c; u' `2 ]# V. S

  107. / r) n' D# w6 |7 X+ z# M! ~
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    ( J3 Z' _0 p$ f7 a; t% B# _8 h

  109. " I( x* b8 n# S7 H+ z) R
  110.                 : x4 r; |- ~, @! Q

  111. # o9 C! }' P8 F1 r
  112.                 #开启headless模式2 h6 m' P- r! W3 m, o/ R/ N  r$ x. C

  113. 3 j+ W% D3 P+ x( L1 O1 @8 t
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    6 o+ W6 Z- i9 h3 r2 H

  115. 5 M0 P& E  Y& T6 R& R, f: W
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    ' `1 [$ o* A' O- q

  117. % H+ Q$ T; a/ j* ^) ~4 r' ^
  118.                 left = element.location['x']" `  X0 J6 r5 K0 k3 ?5 ?

  119.   p/ `: g* {' p1 g9 _/ [
  120.                 top = element.location['y']2 O3 l, F4 C, [' D

  121. $ D! f! F2 @! a7 \5 v. g4 P
  122.                 right = element.location['x'] + element.size['width']  V) u: t! @' H: T$ M0 g! M" D
  123. " M3 d0 [3 F/ E
  124.                 bottom = element.location['y'] + element.size['height']
    7 V+ f. S, u/ k
  125. / G8 K+ v  ^( z9 O
  126.                
    / k4 S1 N% y3 m1 ?* n7 c0 F" v

  127. : v" u4 {6 _/ S. U! y8 c
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    ! V, z2 S) @+ Q% H& m( E6 X
  129. 2 ]' o0 l/ I) F. @% M- [% t: B2 N
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    2 c! ]9 }/ d. }' d6 O# E9 A
  131. + K& U( q: ^- f' m# O, U
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")8 D# e" H5 S. b
  133. . a0 K& t2 j" T& R
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')# j: M: f3 U" z  S" N
  135. 7 v) M3 u/ F3 ], \( N$ D
  136.                 image = get_file_content('/tmp/screenshot1.png')
    & J2 D4 U& f  w% J; c6 `
  137. * e6 ^1 b% J  s& \  E# M
  138.                 a = client.basicGeneral(image)7 U, U8 q2 T7 ]

  139. 5 H" f' B# ^4 x9 o$ k. r6 ]
  140.                 print a
    * \- p0 q" T/ z+ F1 i3 ]
  141. 0 h" b8 y& I# d' X
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    % a- f$ a+ Q, \0 [; k+ Z' k

  143.   `% x7 p1 J1 x, ?- X! V
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    , C9 Z( J# t, |9 r) h0 ]
  145. 5 V* j6 ]# C: g) Y  A; U
  146.                 yzm = re.sub(r'x',r'*',yzm)0 Z6 P& Q5 {! Q
  147. 5 d4 U* _) ?+ W# x7 o
  148.                 yzm = re.sub(r'X',r'*',yzm)' u0 D; u3 i* ~7 H. H
  149. 2 K* h0 |" a% V: z! K. f4 q
  150.                 yzm = eval(yzm)
    / f9 M$ T4 J. z* v
  151. % m& y8 ?/ r( j% D/ r5 E# k
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))' E; v  W" n( u

  153. ! F* j: h! d7 O) A6 N
  154.                 print '验证码: ' + str(yzm)- x7 ?; C3 p7 w' s
  155. * S+ S! a+ S2 H' n0 n" a
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    9 i' n- G4 y3 x. p2 q( g! o

  157. $ @( ~$ F! n  s+ R* r, `2 u# {
  158.                 driver.find_element_by_name('submit').click()& N* g' h' ?' G) l! _$ z. M" f  w

  159. 3 B$ \1 p* V1 K8 i# x: f
  160.                 time.sleep(3)- h+ m( b3 g* w# ~* b
  161. $ Q' p4 ~% |& X! V( Q, ^) i! [
  162.                 return 1
    5 w; X) z! W: ]/ C( D
  163. 4 r' J# a8 z8 B0 j
  164.         except Exception as e:
    . t, |  c3 `( t* M1 s
  165. ! N9 S  g+ K) f0 b
  166.                 return 0
    3 J  y+ h8 Q8 ?$ [! v( k9 d
  167. # j2 g6 m; f" B1 D, L: b
  168. def followbutton(driver):
    ; s9 s: T  q# Z( [0 _# k  Z! c5 F" P

  169. ' k5 D) u* ~5 t$ }) h' _2 k+ A
  170.         try:
    . c- F, p$ \. n- X

  171. ) A* a2 ~& p6 p6 I) [
  172.                 driver.switch_to_window(driver.window_handles[0])
    / S. g0 L" M5 u3 J  k5 f

  173. * l+ T$ I1 f7 S1 f5 i% f5 T8 J) v
  174.                 points = driver.find_element_by_id("currentpoints").text* V* g9 f: \5 Z$ N! w

  175. 0 N* \7 A- }" \  Q
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    + N- r: y- x4 b

  177. % E0 r4 n4 `% l1 X
  178.                 driver.switch_to_window(driver.window_handles[1])
    , c: z6 K  P7 F) s
  179. ; I5 j6 e+ ~, U  {" O  h" I
  180.                 VideoSource = ''.join(driver.page_source.split())1 ^# W$ k4 L& d, M4 D

  181.   u; ]* q/ b  j9 L8 Y* _
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    : W# f" Y- `' H* s
  183. 4 Z7 Q- W6 h1 M' O& e
  184.                         print VideoSource. J" J  Y/ H. ^6 M, b

  185. ! A* c2 |. F- s+ c7 V, w
  186.                         driver.switch_to_window(driver.window_handles[0])8 V) m  M3 s- K, h. L& g8 Q
  187. ' e# s/ @: N; [, y: g! x6 s. ~
  188.                         print "Refresh..."1 M* y9 e( ?+ a( y8 i% t3 ?! A
  189. 7 |* H8 s' Y; }0 W7 }3 u3 k7 N" p) I6 S
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    ' B( i3 @, L6 y( o* p& \3 n
  191. + f. M# y/ ~$ G& S- |! `# W
  192.                         time.sleep(1)7 ~  t. \0 Z( r) r# Z
  193. * ?; ]* R. t/ o9 M
  194.                 return points: R1 L, O7 e4 n; l5 W! I" d
  195. + O  }9 M8 B% o
  196.         except Exception as e:
    # J$ b7 j+ R' @% ~) I: u6 F/ p4 J

  197. ! E# |, F4 \+ ?. b
  198.                 return 0* M& @5 v6 {9 N+ X  I
  199. # S# V" E$ F8 B  p3 J; z) W$ o9 N
  200. for i in range(0,5000):
    2 W1 G! E& ~" p. i+ C
  201. , ?5 A/ V7 w0 H. i
  202.         try:
    : i3 r+ j- a4 O% ]$ A

  203. 0 d8 e  g( \$ t* N
  204.                 captcha = checkcaptcha(driver)! D9 N9 l4 E6 n: g+ l0 ?: f. \
  205. - m4 O) L7 F; M# h; o- y3 x% s
  206.                 time.sleep(1)" h. @1 A% G0 ]5 C& G
  207. - S8 _& J% m0 P/ }5 L: S
  208.                 checkRefresh(driver)
    ! k) J9 }4 n( U$ x& Z: @

  209. ! u& y& a2 S$ P4 e! k! B2 H8 v
  210.                 points = followbutton(driver)
    ; s' V) i6 |; w( t' _! A  Y

  211. % X2 l3 p& `+ K4 N6 @2 J; C
  212.                 time.sleep(65)
    % L4 x$ ?! ^5 t$ [" Z

  213. ) Z' c2 l% u! ]
  214.                 driver.switch_to_window(driver.window_handles[0])0 k( S2 [3 _) |* C7 u$ _5 F, E" k
  215. / L8 k% D0 N7 b) B
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    ! D* y# N4 L+ _9 p* Z1 `

  217. $ X( A% B9 S& C) P4 `
  218.                 print "points: " + str(tmpp)
    - }1 `/ X/ K! {
  219. 2 Y% @  k0 F: l4 l/ b6 {
  220.                 if points == tmpp:6 m8 Y4 S' x) l; F0 s9 G
  221. 0 P7 t5 Z% [! X( M4 A- m
  222.                         print "Refresh..."
    2 ?2 C. ~+ I# E% U' d* p2 M6 k0 b
  223. % t% b+ B9 d. ?9 g/ d* Y
  224.                         driver.get("https://youlikehits.com/youtubenew2.php"). N4 o% z$ Q* ~
  225. + R/ K/ k5 s1 i" x4 E* s7 f/ Q
  226.                         time.sleep(5)2 U! H5 |7 b! {
  227. $ k, A) q5 D7 J' X
  228.         except Exception as e:, L) C5 R; d8 K$ B5 @: \
  229. 0 U( ~" j" ]# m) u3 o' e* d
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")& Q4 q) c# X& ]

  231. 6 _) i- Q: y" w7 E" e
  232.                 print 'error: ' + str(e)
    5 w" Y7 R" c) P9 k

  233. # @  f& m: U$ \8 j2 j5 N) v, h
  234. driver.quit()
    6 U+ s  S0 v, @7 ~, O
复制代码

& j2 u% c  C7 t. u6 q
3 M/ M* q" n: F1 V
4 n9 X2 `( E( X( s/ R2 }! w 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 ! ?9 A1 p4 v6 z. _
4 H3 j$ o: Y: `* O

评分

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

主题

985

广告币

1481

积分

高级会员

Rank: 4

积分
1481

社区QQ达人

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

使用道具 举报

176

主题

1089

广告币

4145

积分

超级版主

Rank: 8Rank: 8

积分
4145

社区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:116 o" j* K1 ?- N/ t
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

2 q4 l7 r" R$ [4 x小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈' U/ M# H9 @  P2 \, \+ y
) y- C# p9 D$ L! w/ ]. B( Q. W
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-23 19:00 , Processed in 0.053463 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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