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 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理全球虚拟卡, 支持U充值
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10254|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
HuiTong虚拟卡
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
3 n- B1 i7 o5 ~  Q1 Y  V9 X
5 N$ `& ^' G: S" \( y* `; U" X
1 q$ n6 j. S( O/ }  V* }
  1. ' k3 C5 n8 }9 V4 o9 W- v/ O( O
  2. # -*- coding: utf-8 -*-) m$ H7 w" W: Z9 n
  3. 8 [$ O2 }% x1 S1 }  |4 L2 p$ S
  4. from aip import AipOcr
    - t! d  y: R6 m* p9 d6 S7 F

  5. " M" U" m/ ~# X& m
  6. from selenium import webdriver9 Q& N8 i, Y$ v

  7. $ G; s/ B6 z7 Q5 \& ^5 L, o2 I. a
  8. import time+ [# T0 ]3 I, ]& F! \0 G
  9. 1 c/ Y; e4 V  a6 p! h
  10. import random3 n% [! X$ {* H( c, U2 {1 {
  11. 7 `9 v, Y0 k+ G
  12. import sys,re
    % I  ~+ p5 K; S7 m9 b6 x
  13. . z3 r4 ~2 ?, u6 H; E
  14. from PIL import Image, ImageDraw,ImageFont
    1 |: P: L4 a+ a) |% \, U

  15. 7 a! \9 `5 d$ j  \' E
  16. """ 你的 APPID AK SK """4 \$ M  B5 C- C3 W: s+ U

  17. 7 ~( v1 a. L' t7 O/ ^# ]7 M/ |
  18. APP_ID = 'xxx', v6 j; j8 s0 e& n& n+ {6 h
  19. 1 _6 N' w4 d8 Z6 V2 N5 X3 c
  20. API_KEY = 'xxx'; e! @4 U2 x. N$ ^
  21. 4 |; r. |; W9 |* @' [7 c
  22. SECRET_KEY = xxx'1 P! I2 ~) t% t. I7 d

  23. ' c* \2 s3 U# O9 P4 c( D0 J
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)% T/ e' _" v/ S6 @" D/ a9 B

  25. 1 x  A2 R. K, m- X8 d
  26. #PROXY = "127.0.0.1:8118"
    ) W3 F0 F. y2 }" _7 g9 y0 K! R( |# S

  27. # o$ S& Y0 \) D4 [' E# t
  28. chrome_options = webdriver.ChromeOptions()5 i9 K, {& E# t9 ^

  29. 3 ~( C: {3 s( p# g
  30. chrome_options.add_argument('--headless')  }3 S0 E/ t( ]; o) R7 D# t

  31. " G8 O# `; B% r5 N
  32. chrome_options.add_argument('--disable-gpu')
    " i" m0 }0 a% v

  33. 9 l) H, ^* [9 @- n! p/ [# W
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)' z) k+ u& r/ V; w

  35. ! F) M7 m+ ?" q2 |" c
  36. chrome_options.add_argument("--incognito")+ s4 F; W: O1 W6 s% `( K) a- V6 e! W

  37. 1 |0 C- @' \' N9 S. _
  38. chrome_options.add_argument('--ignore-certificate-errors')
    8 P3 g& H; H+ y8 C, p: H# V4 J
  39. , w/ g; n& ?7 O$ y
  40. # Win
    8 Z, [+ k) n+ b1 ~

  41. % y* Z) L% h0 y! O+ L0 y  Y
  42. # chrome_options.add_argument("--log-level=3")
    6 R. v/ M4 v+ D& A; a  m
  43. 1 u& O( f* o  w! S0 z$ m: j
  44. # chrome_options.add_argument("--disable-logging"): j" R- x; B" s9 c$ Q! @$ m
  45. : U% L% y7 N) i: r
  46. # chrome_options.add_argument("--disable-logging")
    : K$ X! E; W3 T0 c( N
  47. 4 a5 f( a! y* C5 ~4 }6 A  K6 Z
  48. #chrome_options.add_argument('--no-sandbox')
    6 @  w8 h# k  p) A* D# D

  49. . r2 O! m+ H6 M
  50. """ 读取图片 """5 q! w  F4 w1 [$ [4 x% Y0 c

  51. 1 Z$ L7 e7 A  _+ `4 u1 Q$ s
  52. def get_file_content(filePath):# ]& t& ?6 S- Q
  53. ) r* F# M# p4 O
  54. with open(filePath, 'rb') as fp:
    2 _* O' ]8 g1 g- T* _7 Q/ [
  55. - t; b" V1 t& x; D8 \1 m' |" ]6 L
  56. return fp.read()! w7 c0 V3 x* ?4 ]: |" B
  57. / X/ d* l4 t' B* j; \: W
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)- l* V- ], D) r2 a/ p2 [# P

  59. + e; D" K/ j1 g- Z- `4 [) P* f
  60. driver.set_window_size(1280, 727), j% Q8 `. z! N

  61. $ N) D7 D; Y6 ~/ U4 `" ^' q0 @
  62. driver.get("https://youlikehits.com/")
    $ o) y; ^0 i5 q& e$ z  a

  63. ! B( d! q) P& L# Z
  64. time.sleep(5)5 B' W0 E2 z4 j3 X: w
  65. 3 P) y1 v( u7 g* I( o$ ~
  66. driver.find_element_by_id("username").send_keys('11111') #user
    2 v: a( J$ G' O
  67. * k2 O0 P! F" g
  68. driver.find_element_by_id("password").send_keys('111111') #password9 Q' O* F5 a4 @6 |" \
  69. * B& i" f, h1 @% m, J: Q9 F( I
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    # o+ h% u' @( U$ [  d* o& S

  71. $ d% H% I8 Z: b! c" O
  72. driver.get("https://youlikehits.com/youtubenew2.php")0 z) _" ?% T9 X
  73. 7 e3 ]/ K; X2 `$ P) k4 u
  74. time.sleep(1)) n. t) b+ K9 A
  75. 7 p, v$ Q- F: i: l. q( n3 a2 f
  76. #Try Again' k; p# [* Y# V

  77. ' W6 q8 `$ L6 r9 T* {
  78. def checkRefresh(driver):
    / |5 O/ s# m4 L1 K

  79. 9 f2 n  G/ ^/ W1 d
  80.         try:- m/ @2 b# x, W/ t* T) r

  81. , f, G8 X0 O( o: T9 @
  82.                 Refresh = driver.find_element_by_id('loadmore')" h* D" d- A) m' J. K0 U+ J
  83. 7 S4 M; `& `  o5 v
  84.                 Refresh.click()* h3 c( Y( p! I. e

  85. . B) M0 z9 O1 v4 w$ U9 _
  86.                 driver.set_window_size(1280, 727)  w  }% X% U5 s+ P3 o

  87. * Y, [7 l( d& ?9 y! ]
  88.         except Exception as e:
    $ {! s5 T" L9 p& E# l2 r8 Z" }

  89. + T9 X) }7 H* }4 u# Z  W( ]
  90.                 pass
    / h( h4 E/ Z. F. |- w" y4 u( x

  91. 2 K/ W% b" E+ B( o
  92. def checkcaptcha(driver):
    # f1 T; R' O7 O

  93. 5 y$ Q2 h; c" Z1 u  d
  94.         try:, A3 N; s( u% g: o* a% Y, h

  95. / r$ B3 G( P% y, R
  96.                 captcha = driver.find_element_by_id('captcha')
    # T' ~8 v& ^1 N/ c- R) N8 {

  97. 9 {) u4 C+ U$ m  G, \
  98.                 print driver.get_window_size()
    & J4 f: {$ o5 E; k( d/ C; p
  99. : B6 N% {  b' I( i5 W6 ?5 e9 ~
  100.                 time.sleep(2)
      r3 c6 L- G+ A; y; z% }

  101. & J* W, O9 p$ q/ @1 `
  102.                 driver.save_screenshot('/tmp/screenshot.png')4 |) P7 p5 _* S

  103. ( d. {* d1 K* @) F3 X, W5 R9 U, q" y
  104.                 im = Image.open('/tmp/screenshot.png')
    2 r9 \/ W+ {) v' h0 w

  105. " J) {( E9 I3 O9 r" P; t' {
  106.                 #取消headless模式
    2 p' J5 D4 u. ?0 o$ ~- L+ v8 h  \
  107. 9 A: u" J( n, M" j$ ^7 E, o6 A
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    ( R; `0 e- W/ K' F0 X" T
  109. 7 E+ V% n5 \+ e% N
  110.                 , k: y7 {& `* b+ y$ y

  111. ; n0 Z+ C0 @9 B6 q. Z- B! ?" U0 U. G
  112.                 #开启headless模式
      C0 s# p5 o& n8 `! p1 |

  113. 8 N0 \3 d  E0 d! B- z. G
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS): t1 N1 f/ `8 `( a& n" i3 x% W9 L

  115.   `) N- N4 R9 u1 u% _
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    + G+ }3 ~/ K$ f& o

  117. . |/ z, V7 d: q/ `* J" [
  118.                 left = element.location['x']2 l7 r7 i$ y3 e6 \9 y5 C

  119. 5 O' }" o0 P3 V9 \. v
  120.                 top = element.location['y']# T: R9 N8 F% t

  121. & t# E& \9 n* w) l% E  e( J7 I
  122.                 right = element.location['x'] + element.size['width']' n0 P2 H6 n7 E
  123. # T4 K' n7 p  X
  124.                 bottom = element.location['y'] + element.size['height']! e! t6 I! \5 k2 z# Q
  125. ) y# l6 S4 j2 m. O
  126.                
    ! n- |# e3 k. ^1 V0 D

  127. : U, g, G+ O8 W. x  v( f) J
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    ; F# `2 H8 Y, D8 u

  129. ' G, `# F0 h9 {, t! M
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    0 j0 W5 C; _  i) o0 X
  131. ; G" Q5 s. a& H& y
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    : C9 ^% _% i; ]6 |5 J

  133. - }: U$ [' W, r, H. |# P( H" f" C
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    ) w9 {6 T) l9 ^- n0 Z4 R

  135. $ l) F2 C$ \7 j2 y
  136.                 image = get_file_content('/tmp/screenshot1.png')
    9 A& ]3 a2 w% ~7 b4 q- q

  137. 4 X6 H$ h1 p! O. ?3 t
  138.                 a = client.basicGeneral(image)! d  Q8 f4 j0 k

  139. 4 f9 R1 c9 q6 ^
  140.                 print a4 b) {, x* d* l$ x3 Q

  141. ( @) p, ^$ Q# v0 N) Z3 Z4 _
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    6 q/ q/ L3 _$ z
  143. 8 g. y' r( C& y7 E4 h( Z
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    0 _0 s8 T) E, w* {* T
  145. 6 z5 J2 L$ S0 V, E# p
  146.                 yzm = re.sub(r'x',r'*',yzm)" G' c# G* y$ d/ E6 o& A
  147. ; w$ {1 ~1 V( ^' r, N
  148.                 yzm = re.sub(r'X',r'*',yzm)
    5 e7 K! I, Y# ?

  149. 5 m. \  K+ n- J: t7 S
  150.                 yzm = eval(yzm)+ C. X" b/ g9 _( O
  151. ' x( x: o, R  }7 d9 S, T
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    4 B3 @/ E7 n. f& e( W' S4 L, C9 M
  153. ( @" ?3 a  O* y! z8 ]2 i
  154.                 print '验证码: ' + str(yzm)
    2 g7 v! W# z" X+ K. V( }1 \4 N
  155. ; }1 G2 \: a& v. d* h4 H" _
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    ' H4 m1 t5 l0 ^+ `3 l

  157. . z7 {, j2 U; O
  158.                 driver.find_element_by_name('submit').click()
    , u7 f$ E5 L( G
  159. 8 {$ J& g3 q  k# v
  160.                 time.sleep(3)0 E4 o; V. O9 {/ ^  |: J

  161. 6 U1 v3 h0 ^6 d
  162.                 return 1  ]8 u: p4 {7 {  S* Y

  163. 0 v" r1 m0 c1 y8 @7 t! t( b
  164.         except Exception as e:/ c, z: q& o) s# @

  165. 5 ]% i5 Y( v- e9 h8 _4 q4 r
  166.                 return 0
    : a" Z: f, u' b& h

  167. 7 _9 g* M, v% b/ @7 K
  168. def followbutton(driver):+ O: Z! u- D# p0 h
  169. : p9 v$ [3 \0 t) K: x+ n. l
  170.         try:; b% T7 Z. ?. o. F, ?2 H
  171. 4 [  l& m6 i* z9 t6 `
  172.                 driver.switch_to_window(driver.window_handles[0])
    : ]. G6 E: q" n1 {5 z' S
  173. $ O- @& K4 c1 r0 V" i. O6 x
  174.                 points = driver.find_element_by_id("currentpoints").text  I6 P* `' v5 t( U  ]8 |
  175. $ a# @* M! g: U) j& [! t) n! [
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    5 S: z( v6 J& {2 V* W

  177. 2 @6 N; N! S# [% C" J( A( P/ w
  178.                 driver.switch_to_window(driver.window_handles[1])
    , `( R2 J& H; U
  179. 4 C4 _& W2 ^6 M7 g1 ^4 U
  180.                 VideoSource = ''.join(driver.page_source.split())
    " h# Y  C) C. t
  181. 0 M) w4 \- j- P! \6 g& b
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    8 ~/ I  f5 }' `7 H1 s+ O

  183. - t8 [! {* j0 ~; e# t, H
  184.                         print VideoSource& L5 m/ g+ g) z. [; ?% m  d

  185. # T0 T( N' l8 Z
  186.                         driver.switch_to_window(driver.window_handles[0])! ~' X( ?! k3 c" V
  187. - }  Y8 [- P# X. `( M# b0 Z5 p
  188.                         print "Refresh..."
    4 }& r& G' J% p2 L
  189. ' z; ~8 R" t7 p2 {5 O
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    9 f- M7 [* M4 T4 r! h, j. o$ }

  191. - O% i  ^4 D! `9 k6 Q  R0 y
  192.                         time.sleep(1)4 i- U& I. w( X+ w' d
  193. 9 C4 e& J  Q, V
  194.                 return points
    # L* v5 j# y8 u( q
  195. ( y. @( ]* V! X5 X+ S
  196.         except Exception as e:) e8 l' a3 {9 T; Q
  197. . `3 l, n* c' T/ V! z& H: M
  198.                 return 0
    , J" d+ i  d; P: S
  199. # A0 K0 ?' ^7 W
  200. for i in range(0,5000):
    ; T  R1 E! e. u" H7 r

  201. ; v; H1 g. S% [0 g5 b6 K7 ^
  202.         try:7 H: U2 s( c% O+ [+ A' P
  203. 3 u- e9 X! Z; M
  204.                 captcha = checkcaptcha(driver)) j& W8 h4 s; }2 k# I
  205. * @0 ^/ w; w) S9 T! x7 k$ K8 ^
  206.                 time.sleep(1)
    1 [) o' h" R6 \9 c1 J+ P4 D; s9 ^

  207. 0 \) O+ K! I& ~: _+ w2 v8 R6 ~; E
  208.                 checkRefresh(driver)
    , h9 _4 e; j9 _& u; \

  209. 5 v  }! h! j* i# P! u! k* t. ~
  210.                 points = followbutton(driver)
    ; m; p$ c' ^6 ]1 q1 Z* }

  211. ) q* H" G; A* k5 j- C
  212.                 time.sleep(65)% |5 \6 s* f1 |
  213. 0 D8 }4 U* O; @' k9 Q4 m
  214.                 driver.switch_to_window(driver.window_handles[0])
    : @: h' X5 `6 W/ U0 R# I# z% ]

  215. 1 h$ Q0 E: {. i" C0 M1 n" K4 ?
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    1 S; r/ ?) X) X. ?
  217. 6 M0 ~. E' t( |# S/ O" |! c% u4 x
  218.                 print "points: " + str(tmpp)
    4 o- _: K. j8 W5 o; [

  219. # T& O% ]# ^) h+ |
  220.                 if points == tmpp:
    ( J4 m; ^& n! I0 e

  221. # w1 ?/ K* t* }$ k
  222.                         print "Refresh..."
    $ j6 z) f4 N3 g3 n5 V* C3 z

  223. 3 Z. e0 K% z. X$ d2 V
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    % u. z4 _) X1 e- l* t' z& F5 u3 J  f
  225. 9 c" c( Q; B8 L: W
  226.                         time.sleep(5)1 f, q6 h/ P3 A6 |0 \
  227. 9 L# q9 E+ \. O+ q  B
  228.         except Exception as e:' n* l7 V- b) Z* k* \- F" H

  229. , d1 Y0 C% Z; n9 [" X
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    5 |5 g: @  B& N& x3 C: C5 o

  231. 1 H) K4 _" z7 l2 m  v) @5 y  p8 {$ L
  232.                 print 'error: ' + str(e)
    ; h. D% j, e8 A* J& K6 F; `* B/ e
  233. " y! u7 c  @5 e: o6 W% z" @3 m
  234. driver.quit()
    7 ?. c  t4 P! M( f/ \$ H
复制代码

2 p7 F0 @6 c6 o9 T
8 R' D6 u2 f9 {) Y7 v; t, r
4 g: u- w; W8 h3 o' |' }0 R: y8 L 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 - j- o9 a4 ^$ w) t4 G
9 S( a+ r# a( d4 z, [+ r( V

评分

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

主题

1012

广告币

1508

积分

高级会员

Rank: 4

积分
1508

社区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 W9 g% ^. ?) {
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击
2 v) M) a: [# f2 w
小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
7 [3 [1 O" I, B7 E
" r, w8 p# R' z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-19 20:48 , Processed in 0.057033 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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