AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
 谷歌+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户(优势)⚡️个人户,bm户不限额,账单户9Proxy ⚡️ $0.04/IP, 无限带宽
IPCola原生住宅IP⚡️$2.1/条双ISPGoogle、Bing官方总代  联盟流量开户fb耐用号0.01一个fb账号官方合作商
FB资源,账单户,分享户,国内一手FB企业户BM户账单户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
广告位出租   
查看: 9922|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
SimplyNode
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 + P. p7 R, o! m
8 p; F+ ^- V0 h6 N

1 V; X  Y7 `- B7 B# ?

  1. % I6 {8 f- Z7 I
  2. # -*- coding: utf-8 -*-
    $ k+ Q+ A) d) r/ r$ p

  3. ) C. t1 r# G+ W% D
  4. from aip import AipOcr$ S5 c  G; v7 R" A- M

  5. 1 h- E9 F8 U. \1 b8 G
  6. from selenium import webdriver$ V0 a: o5 y: [! `' m

  7. 3 Q' u$ i+ p- G+ G
  8. import time
    * ]: {* I' r( O3 d; c6 s; T
  9. 1 c# [# x/ U: R7 i* E
  10. import random
    5 _  f2 L5 e  ~0 D0 ]% @  ?9 X7 }
  11. ' w! I/ h# L3 T7 m2 m% ]
  12. import sys,re0 d6 ?5 k- B8 e* e" e4 |

  13. : j1 I0 ^- H$ x/ R# D
  14. from PIL import Image, ImageDraw,ImageFont
    3 Q4 G- z; Q4 m0 Y
  15. $ L; N; \" @6 l- A
  16. """ 你的 APPID AK SK """) A! y! l! a+ g: ^& C5 i0 T! x
  17. $ o1 B% q( B, a9 ?
  18. APP_ID = 'xxx'
    : u6 W. s: [% E& _! W) x; s
  19. 6 g8 u3 I4 E1 r9 O, v' W1 F
  20. API_KEY = 'xxx'* X8 t; Z# D$ v0 R" W# \% \. Q
  21. 7 _% Q* H* _" U
  22. SECRET_KEY = xxx'6 a( d, d4 e0 ?  B2 {/ E6 ?5 r  p8 T
  23. * X$ Z  K) G4 R" u  e
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)! c, D5 ~; |2 D7 k9 \
  25. 1 L2 w' F7 b3 n& p7 {/ u  _/ [9 z
  26. #PROXY = "127.0.0.1:8118"- o: ^' o/ m7 a5 F4 e3 h0 a
  27. + F, A# l* t5 W2 j% Z+ e
  28. chrome_options = webdriver.ChromeOptions()7 B0 a, w: j. n( y- O% s
  29. : u+ I, j+ k& M/ ?
  30. chrome_options.add_argument('--headless')4 W( m( l1 p$ u# P4 X' U+ N

  31. ' @5 o, U3 B6 d4 C3 c! @9 k4 @
  32. chrome_options.add_argument('--disable-gpu')$ a5 m" g: [, n0 \

  33. * Y: o& g: e  z2 L, y
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)9 f$ B4 n/ r' B$ d& m( s& |/ ?! u. }
  35. ( `1 T0 W+ W) R6 v: a
  36. chrome_options.add_argument("--incognito")
    ; L5 }5 j1 r+ }4 w# ^% s
  37. 5 P. }4 d+ U& g, v, G/ j7 P
  38. chrome_options.add_argument('--ignore-certificate-errors')
    9 X- T) L0 }; R; ~, i6 M
  39. # T) o: ?$ j4 \/ \8 I" r, |* e
  40. # Win% |5 G8 w% e# C7 y8 F, _9 @

  41. 7 P* ?3 k# U5 t
  42. # chrome_options.add_argument("--log-level=3")7 R+ f( i& Z, ~. Y5 u0 a
  43. ( J' w8 }% K: z4 b, G
  44. # chrome_options.add_argument("--disable-logging")
    8 p) R" X& r, u& Y* e, I0 n) }

  45. - w& j% S/ G% u: F
  46. # chrome_options.add_argument("--disable-logging")7 p5 b4 i: }3 Z8 v* B# t) ~% U
  47.   S# d& l( h  `9 d, [
  48. #chrome_options.add_argument('--no-sandbox')# z9 {/ g2 |6 s: |

  49. & U0 [$ T) N9 I4 R
  50. """ 读取图片 """
    8 i, J! a4 y0 P! U1 `

  51. ! K+ m2 z+ n! m8 g) F  K
  52. def get_file_content(filePath):# A* @" P# x/ \* ^& ]
  53. * w: o! k) T- h3 u
  54. with open(filePath, 'rb') as fp:0 i. \/ Z+ E. }' w

  55. * g, x/ V, ~% f9 N
  56. return fp.read()
    " v) f& \! R% d3 j
  57. : G+ }7 F6 I& K! T% @
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)5 W" ]  N2 I. S: t* n' y! ?

  59. " y9 R5 j9 Z+ o5 T( H  l
  60. driver.set_window_size(1280, 727)
    2 j6 k2 T1 n' U0 J) h/ t
  61. ' \3 U- y0 V3 W5 I) \3 R
  62. driver.get("https://youlikehits.com/")7 ?& \$ M# U. O; F& x1 L- V
  63. . ?5 o( @! ]! _; d- V  I; e
  64. time.sleep(5)
    / g2 k" [8 O3 D& Y7 D

  65. 8 y% S. Q* ?/ F
  66. driver.find_element_by_id("username").send_keys('11111') #user
    / t" l; I9 e% S

  67. & D% O9 t; [7 n0 H* S! n& ?3 D7 V
  68. driver.find_element_by_id("password").send_keys('111111') #password
    1 Z! K0 D* m( ]( X
  69. / c/ n( q$ l  E1 @7 x3 v
  70. driver.find_element_by_xpath("//input[@value='Login']").click()7 q! ?5 o# T: K# V( C' s3 n2 ?2 }

  71. ( `4 u. K4 }8 }( X8 |6 x' R% o% o. i/ `
  72. driver.get("https://youlikehits.com/youtubenew2.php")
      w" o7 z/ d* y  i
  73. + p% M+ [' ~- m! P7 N
  74. time.sleep(1)
    ! t: ~& R/ Z9 e. l
  75. & s. M* S+ Y% ~) I0 H7 w) ]2 f
  76. #Try Again* L% h1 A/ Y/ K; Z0 i

  77. 4 r6 o8 `. T  u  @5 Z$ I
  78. def checkRefresh(driver):& U) ]0 y; y3 d! q

  79. * O+ r3 A* H: s5 i3 N7 t3 m
  80.         try:& d% h6 ^" k( I- \6 @9 b1 m

  81. 9 e& Z; J. x4 W0 }* i
  82.                 Refresh = driver.find_element_by_id('loadmore')" Z, Y( R, ~2 c; _1 m
  83. . y- G# X  N6 z! {. ~
  84.                 Refresh.click()* r; P! X6 ?( d

  85. 7 Q# W% \8 D" \( I4 b4 S
  86.                 driver.set_window_size(1280, 727)
    ! x3 B: Q( v* P3 O- Y) H/ E5 A

  87. ! e4 P, b/ x# J7 r9 r4 ^; }+ i/ J
  88.         except Exception as e:) l; ?: p! _2 t8 g8 @8 D# ^4 S% \

  89. 9 K. C7 K: p! \
  90.                 pass; E& ^9 s& R0 n9 z  F1 E
  91. & j+ @8 ?2 @, {# r6 F# L
  92. def checkcaptcha(driver):
    . }- t/ z+ h3 J/ [! x4 {! C, ]6 g

  93. & A* C( X( y" g8 P
  94.         try:
    ' z$ Q  r% O3 _( B# U

  95. 2 c8 q- W! Z$ c1 U3 m- x+ B/ Q+ @
  96.                 captcha = driver.find_element_by_id('captcha')
      g6 y6 }7 M) q8 ]" ?* d6 v

  97. 8 R6 @  E0 W( e0 i
  98.                 print driver.get_window_size()  m8 q& c3 }' G" S6 t: c+ k" h9 D' _

  99. 8 i% b& J+ N% z5 F" v
  100.                 time.sleep(2)5 h& t/ J+ e& U

  101. # g  D! z; s5 ?8 B
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    ' Z8 g: Y. K/ O1 }. s. @5 H( u

  103. 4 ]3 g! P3 a6 f0 }  e) E2 Z
  104.                 im = Image.open('/tmp/screenshot.png')
    . V2 Z( z9 z7 E
  105. ' q  {0 W2 y: k( V$ n/ x) V
  106.                 #取消headless模式
    5 J6 Y6 C% D2 f

  107. - ?1 L& b9 g! h6 V8 [2 b* k1 v7 l
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    ' ?* u2 C2 X! x  ?3 F1 B

  109. 2 O* z0 C  z4 O; {
  110.                
    ; E6 P) t) L) l$ C0 R- I+ Z6 a9 ~

  111. 8 z. q# D/ \$ l/ s' x- T5 p9 L
  112.                 #开启headless模式
    " u, |6 s% O# R& {. {! m: F' E8 c
  113. 7 }1 U9 {& ^8 P. X: {" _& Y2 d
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)' D  Y; k, f+ X1 b- S0 {
  115. % M. }& @3 R7 z8 S- y; w; w
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")8 E% e* }0 [6 D# s6 f* Z  }
  117.   b6 l: ?" b& v- B! k' A7 p9 j
  118.                 left = element.location['x']2 i* o; O. o) C4 i1 P- j& h

  119. # D0 W9 v5 a8 Z  p: x5 G
  120.                 top = element.location['y']
    7 K* `  G9 V1 |. J
  121. 5 P$ m7 {4 L# z/ C* f4 P2 R4 R5 u
  122.                 right = element.location['x'] + element.size['width']7 q) u/ k  Z" b$ z" r3 p* Q/ F. M
  123. ) s; c2 O! ?/ @; p) P8 X. r
  124.                 bottom = element.location['y'] + element.size['height']0 O- G; n% i, X7 F" ]! g
  125. ! Q# j; X- r) u3 e. u
  126.                 1 u% U* R! s, L( g" _5 P
  127. 6 N: H1 @% U% F
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")  h" I! v: y; Y7 {+ I

  129. : h6 ^2 B: l# Q& f
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    : J+ N0 w$ [+ M" R
  131. ' ^, g8 J+ I% @
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")9 u! p9 L% u. i- z4 ^
  133. 1 i% |, m( f$ s5 ~% N' B: `2 _2 [2 k
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')2 p7 ~6 Z. S8 Q

  135. 6 {. V6 T6 m& p8 ]4 S9 S0 |8 x
  136.                 image = get_file_content('/tmp/screenshot1.png')
    3 V4 T% N# b8 w0 A+ N
  137. 7 b0 R2 V( ~- N3 \
  138.                 a = client.basicGeneral(image)
    ; t) i- }# T/ Z& x1 O5 j
  139. 1 c+ l( [9 q8 ]0 l8 x: }# L
  140.                 print a- H1 |% \1 ?: }% S" G" E1 |" h
  141. 1 @" a" G0 Q' V1 H1 u
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words']). A' }- |& X! R( p+ u5 H

  143. , c" n  \% U* i# p
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    : P" y5 I# W! u/ V# [

  145. + t& c7 G. P2 G  [% h
  146.                 yzm = re.sub(r'x',r'*',yzm)  y+ @! M* X# g- C. Z0 L

  147. , ~! L6 j+ T# R1 p) w
  148.                 yzm = re.sub(r'X',r'*',yzm)1 H( Q+ p  ~" {
  149. & T2 t. i; Y: u. }+ F$ [0 z! M  F
  150.                 yzm = eval(yzm)5 t" d/ R' b6 I; L  \
  151.   A2 Y8 j; v" Q4 B
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))( w; i) p  Q, _) O2 ]$ B

  153. 3 C: i, j( `9 O6 |
  154.                 print '验证码: ' + str(yzm)
    # ]2 p+ R* o$ O7 s3 A$ E$ X

  155. " O3 N, x5 T+ i4 P+ U2 p7 l
  156.                 driver.find_element_by_name('answer').send_keys(yzm)% q# c% E; I  ~
  157. 8 l, o3 B& a3 w. @0 c
  158.                 driver.find_element_by_name('submit').click()3 S" a3 g8 {" q" f6 A* O

  159. ' j& U4 u/ d  z$ q9 s% {
  160.                 time.sleep(3), @: `/ d8 x3 d; {: u$ V8 ~/ d2 Y

  161. 8 P1 Y1 N; t# N& G' }+ O1 i  e
  162.                 return 1; Z% D" ~! J0 K9 U% K

  163. & q9 x! `9 L2 o6 ]" w2 b
  164.         except Exception as e:
    & J! _& L# T" o+ E! E; K! n' k

  165. ! d6 l" o8 a  @; _# A3 x
  166.                 return 0
    * T! N2 ]9 V5 v& n

  167. . }  ?* u: z2 E* c
  168. def followbutton(driver):
    9 B& }. R3 l" c7 m3 A

  169. ( Z! F6 d: h, I/ q, ~, l/ m
  170.         try:
    3 V' r$ ]0 {  y( n5 H! S4 K" f+ G

  171.   U1 {: P7 N; [
  172.                 driver.switch_to_window(driver.window_handles[0])! P' `6 S5 ?$ ]& ^

  173. 9 t" e1 I, i6 \4 i2 U
  174.                 points = driver.find_element_by_id("currentpoints").text
    ' b2 h$ U& L1 m

  175. # N) N: S# e6 o+ V4 E
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    / J+ E. Z9 [6 {

  177. , @+ h6 U$ }* |! ?' L& R7 \1 r7 e+ M
  178.                 driver.switch_to_window(driver.window_handles[1])
    5 Z% A- p; a  D- x2 a

  179. ! P4 c  `9 O, u( Z: E; ~! T
  180.                 VideoSource = ''.join(driver.page_source.split())' j; y' g9 d) A" V4 r" A
  181. % x; Z; {% S$ F4 [4 }
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    % b- n* Q! N* W; ]7 [, o: p

  183. % @3 o: }4 F+ x6 k$ Y3 K
  184.                         print VideoSource, G3 D' i) e: S" a9 f3 V! t

  185. * E) a3 G8 g9 i! j
  186.                         driver.switch_to_window(driver.window_handles[0])
    . H) o9 }6 l; U4 ~2 Q- L5 W

  187. ; B; }2 D! _5 c2 v! R* |9 s
  188.                         print "Refresh..."* x7 Y- A$ V  w7 T& t  W

  189.   }4 }/ Z% S) I- G0 `; @
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")2 @! g1 J- q8 O! V7 C* W( Y, y

  191. 9 {' ~, V( h2 }* l7 @. \
  192.                         time.sleep(1)
    ( d' @* l; ^1 H) G6 P2 W

  193. 3 _& C  Q" e* U8 l
  194.                 return points) X0 l1 O& b1 \
  195. * u0 Z/ b4 g7 |. f8 [5 p
  196.         except Exception as e:; G3 c3 c& H- o, D: I# J
  197. 5 v0 @' Y5 e, g2 g7 A& x* G
  198.                 return 01 B$ n5 O. n7 P

  199. # {- b, g  n8 G3 v
  200. for i in range(0,5000):
    " o! d  `2 x' N- b

  201. $ |' x$ H- z' c/ h& t! s  V- Q. Y/ C
  202.         try:2 N( z/ e2 v! }* `7 L6 \+ H
  203. * J  |5 [4 {& C4 X& l; X3 n7 j
  204.                 captcha = checkcaptcha(driver); C. g( F5 F/ u

  205. ! n8 R- f2 {8 m% M6 ]# B2 t
  206.                 time.sleep(1)0 w# g1 P0 B" [$ _! K  `
  207. ) b  z8 l# _$ N- _
  208.                 checkRefresh(driver); ]* [% n( k& P$ V2 p0 U) Y( G* l. C+ y
  209. % T9 e2 @5 o! b+ e% n; M
  210.                 points = followbutton(driver)% r3 _& z9 ~) V+ P2 B3 M5 i3 F

  211. / J* L3 Z) u5 `, ]( N
  212.                 time.sleep(65)
    ! X' y0 J5 b2 F& J) `2 X

  213. 6 e2 ~  u- ?6 \+ O( _
  214.                 driver.switch_to_window(driver.window_handles[0])4 \$ _% o. N! T" U$ Q% O
  215. ' v* H6 K8 E3 G0 ^/ e9 A
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    9 [% }$ ]" p+ Q# f- f9 {. m& H
  217. 9 m( o+ \& u7 t, ~
  218.                 print "points: " + str(tmpp)( l" N/ z2 e3 ]& s' h" F3 x
  219. ) {) _9 e. L  X5 y' O
  220.                 if points == tmpp:0 g. C2 u. b$ u. X

  221. 7 q  \! O4 Q8 z' o( X: K
  222.                         print "Refresh..."
      [- i* t. D6 Y& e, v- @

  223. % u" G* u2 Y: ]  C" y
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    ! R$ K# `3 w; x* }0 p' p: {3 V( y

  225. : S* J- @& [1 f
  226.                         time.sleep(5)
    0 G8 l+ A& G9 S! g
  227. # K! S. H6 d5 `9 Q3 D
  228.         except Exception as e:
    / V& {5 v$ J& G' R4 \0 {2 ^, K, g
  229. 8 k! b1 ?# p! t
  230.                 driver.get("https://youlikehits.com/youtubenew2.php"). W! l+ `$ E  Q/ l# }

  231. , w8 S- f. B2 {( d/ |- f
  232.                 print 'error: ' + str(e)
    / a# g. q! [: J( Q4 a) X0 G% F- s
  233. ! C) }! r/ [( q6 a) \
  234. driver.quit()( k' i3 ]! @2 C' c. E# q
复制代码
  @8 m4 @+ W" T, Y" G" U! W

5 M6 W/ J" C+ l
  B, L6 h  Q% K4 Q. }& s8 W8 k" D 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
( v& m( G8 c+ T3 w. r+ ]  Z8 J2 f& [0 M

评分

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

主题

1097

广告币

4153

积分

超级版主

Rank: 8Rank: 8

积分
4153

社区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
7 c/ k2 _( g1 J7 g用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

% l4 _/ V5 T  w7 n" |0 j小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈! N  m% M1 F" i; }
5 K8 P) c4 m+ Y8 K
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-2 03:15 , Processed in 0.055265 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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