AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
⚡️AdsPower:安全不封号,高效自动化广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN
7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款Facebook 批量上广告尤里改 - FB 稳定投放
免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)FB企业户,TT老户,GG老户源头
PTM虚拟卡[全新卡BIN+高返点]PTM虚拟卡[OPENAI+全场景通用]FB虚拟卡⚡️消费越多返现越多->Tyver SPY汇聚海量广告创意
广告位出租8500万高质量住宅IP,助力各种需求  
查看: 10139|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
6 ?8 t, \0 H/ ?  a; L5 b" b0 }# q4 Y8 U  @, I
; b# i8 C; g* j2 e% g1 J
  1. , r; l2 w) U8 j( V6 }9 Y+ N
  2. # -*- coding: utf-8 -*-
    + U  r( c/ T/ u7 v% L  Q
  3. , ?8 L5 b9 u6 ?- z- f
  4. from aip import AipOcr
    " T; u" d. b3 b9 e

  5. / V* \% L- M4 d
  6. from selenium import webdriver8 k$ W# K/ j+ z0 i  X$ k

  7. $ a* ^, P9 v+ [+ u) W6 ^
  8. import time
    ; x* U! E- Z7 ^! k6 Q) {
  9. , ?6 n) y& w8 Q' z$ Z
  10. import random
    $ u0 c2 h) R/ o" V$ D' l  B
  11. # ~+ }/ ]6 G% s
  12. import sys,re, G) f* }6 t) \5 m0 u
  13. 2 ?! B" X& f- {6 l% ^$ B7 s
  14. from PIL import Image, ImageDraw,ImageFont. c; ]* M* |4 x- c

  15. 1 R7 ]( F, [* a
  16. """ 你的 APPID AK SK """9 g, Q" g$ o" f8 s- s: |0 a

  17. 1 }# b- h8 x) J" s3 W
  18. APP_ID = 'xxx'
    8 X! [! ~2 O) `, ~+ E2 E
  19. 3 y8 k; s3 Z$ v( e% i$ B2 H; j
  20. API_KEY = 'xxx'
    # V9 h5 h1 W: b" q  \" L* s. n. r
  21. * j7 O* H8 Z( D4 \! P1 Y
  22. SECRET_KEY = xxx'% I* |5 `8 Q1 Y* b7 r( t/ V! D
  23. * [8 l4 X! k8 h: o
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    6 ?& Z" T4 d  X& e/ N2 z

  25. ; G0 r; X! G6 g7 a7 a6 N
  26. #PROXY = "127.0.0.1:8118") H: X  I  O2 ]' O
  27. : f+ v/ j& f5 I0 b
  28. chrome_options = webdriver.ChromeOptions()2 Q. G2 Q! o1 c6 k

  29. " W. d/ \/ j3 H; _! ]1 e/ B
  30. chrome_options.add_argument('--headless')9 |* Z# H" Q  W0 M( X
  31. 2 x, x& R+ u+ M3 q6 j
  32. chrome_options.add_argument('--disable-gpu')
    ( I" l4 t8 Y! Z/ V9 N" Z" E$ s

  33. ! ^- |  P& }, Q8 I) X
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)5 _& H5 i/ N4 b% o$ i$ u6 P) {

  35. ( T0 ?# r$ B% b3 v1 X, M
  36. chrome_options.add_argument("--incognito"): V# V/ v' i# E

  37. 6 b- z# ]$ Z4 D% V  _
  38. chrome_options.add_argument('--ignore-certificate-errors')
    : J, g1 a  \. j7 b
  39. 0 f' J4 h, Z/ i8 B% B: {
  40. # Win" f1 _( R4 Z7 _1 a9 [

  41. & I" ^0 v, G: ^, O" x+ \
  42. # chrome_options.add_argument("--log-level=3"). T7 ]/ g# W( l3 C/ B6 V$ k
  43. / U) k1 n' K0 s& Y* a7 ~
  44. # chrome_options.add_argument("--disable-logging"): u5 Z0 Y- }# r5 s1 Y
  45. ' F( v2 m- @3 x" v
  46. # chrome_options.add_argument("--disable-logging")
    6 ~6 q5 X  }% z) b: ^3 \. m

  47. ; I! U$ E6 h* h9 n; o
  48. #chrome_options.add_argument('--no-sandbox')
    9 |  s6 B  i8 y) g" C! Z0 d3 {
  49. $ ~  H; ?: W0 r- i
  50. """ 读取图片 """
    % c. |* o, ]4 K$ ~

  51. ; m8 F8 B, M" h" S2 d
  52. def get_file_content(filePath):  ^0 n* q, N% r2 I+ ~
  53. . v1 C6 B/ b9 q/ d- V8 E
  54. with open(filePath, 'rb') as fp:  B" o6 n0 j8 Y4 w/ P
  55. ) |* t9 N% v/ s: g! k! O# Q6 ^5 O8 L
  56. return fp.read()1 q9 P; w: E, e! E) }4 {8 Y

  57. 4 Y. W4 G8 v- f0 |  r
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)% z# U$ O4 {9 ]: Q& ]: ?5 s
  59. 5 n7 l* F( T; c1 ?: F: [
  60. driver.set_window_size(1280, 727)5 t5 Z! u# v* x4 b  w7 `9 s
  61. ) I7 }5 m) A# S! B# l6 ^5 o
  62. driver.get("https://youlikehits.com/")
    + ^) t+ F" D4 x' g* j

  63. ) {  C& O+ E, Z/ |5 t* V" C. Y
  64. time.sleep(5)
    8 C/ _0 I$ s+ S  }: j4 w: d
  65. 8 Q2 D( ?% k9 \0 k( y
  66. driver.find_element_by_id("username").send_keys('11111') #user2 r  a& J) F7 G1 G+ _/ ?- ?7 R5 k
  67. 7 C) T- n7 o  A5 Q3 I
  68. driver.find_element_by_id("password").send_keys('111111') #password8 q/ M' I; q  C

  69. 6 }# c5 ~$ [, M& [% a
  70. driver.find_element_by_xpath("//input[@value='Login']").click()4 k" l2 r+ N. x" n+ m7 V. |& v
  71. 9 {' ?1 h: b% ]7 z' h
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    0 {* B5 h; b" S( h& M
  73. 0 F8 O2 T4 c- A7 u- W# V9 q
  74. time.sleep(1)
    3 b* E0 x1 S$ P; X0 _

  75. % K( c8 d" D" N& ^3 Z. i$ ^+ f- B/ N
  76. #Try Again
    $ c% X/ E% c9 n& G, R& y. T
  77. " M0 c, S2 N- i0 y/ k! L
  78. def checkRefresh(driver):  k6 A! K7 ?# v  u* T& j
  79. / _& h% b& B$ I/ o% ^# i
  80.         try:
    2 Z; U% [; x% s; B
  81. . b/ d& e0 m/ J2 I) d6 u
  82.                 Refresh = driver.find_element_by_id('loadmore'): q+ `: l1 R7 o1 S6 ^

  83. / b4 r: _8 ^) t% n) f6 b/ g% \
  84.                 Refresh.click()
    8 A" n; c  k* m/ X6 E

  85. ; m. E  H8 t% y9 H" p6 R9 ]
  86.                 driver.set_window_size(1280, 727)3 X, T  c! e2 f
  87. 1 K4 T3 |8 R% \5 W
  88.         except Exception as e:8 L1 |* ~0 v9 s6 v
  89. 1 j5 `" J6 T3 k; A# w! g
  90.                 pass
    1 K* W; U3 Q& `

  91.   R- h) o& C; ~1 q9 J4 k5 u
  92. def checkcaptcha(driver):- d9 `% p, m  E

  93. + R( h5 U  O- e, w% c4 h
  94.         try:5 E! d6 y' Q, v
  95. : z  r' e- \8 ^3 N3 e
  96.                 captcha = driver.find_element_by_id('captcha')' E! x2 `! I/ M' t; c5 n' v% H0 e2 z
  97. 1 I% U, T6 e) }" r0 M; ~
  98.                 print driver.get_window_size()
    & X# ]/ g. `5 n

  99. . n  X+ `; U3 V( c' ?  P$ b0 f" {
  100.                 time.sleep(2)
    + j% w; \  [( k) V

  101. 7 o- i# E1 w) F. G" J
  102.                 driver.save_screenshot('/tmp/screenshot.png')
      ]& R% w7 |0 Q8 S" [, H

  103. # R) e5 q' v( j. Q+ f9 X5 S0 O, e
  104.                 im = Image.open('/tmp/screenshot.png')" x; l+ f* k7 ?; i. X9 {6 }

  105. 5 D& N, S( Y# s4 \. l
  106.                 #取消headless模式
    6 \/ O- p; q2 @# U* t' q
  107. % Q/ u1 p# P3 q7 F; a0 a
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)+ e, j# r7 [) \- ^) K+ `) q

  109. # e$ J. U& H- y6 W* S
  110.                
    5 A  \3 ?- b3 u7 Y' L  ~3 K
  111. , K8 Z0 q" P, X2 ^, Q; [6 G  G3 M+ d
  112.                 #开启headless模式
    : c* m' E3 c" U0 w' p/ b9 D. _
  113. ' i  Y% `" g* M$ R6 _! b
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    + P+ x, q4 _2 \7 I5 T& R8 q
  115. $ G* b9 h1 Q. f/ w3 V5 [: G2 B
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")1 s+ J% f* Y( L& u- a

  117. ; H6 y. X: V- t; ]% @. p9 @/ p5 b, h
  118.                 left = element.location['x']7 l3 \. o# S1 N# U. ~0 g5 z# R% Z
  119. ) Y( o2 g) Y- Q
  120.                 top = element.location['y']) _8 U3 z) T! O2 ~
  121. 9 T# Y) L8 R! R" \8 v1 M
  122.                 right = element.location['x'] + element.size['width']  @* V4 l) E9 y9 q' l

  123. " V, W0 Q5 f6 c+ {  R3 t2 q
  124.                 bottom = element.location['y'] + element.size['height']
    6 T( S1 X4 ]5 J  Z' X- L% d3 }
  125. ) l4 h3 z3 }% d, z. t3 g
  126.                 2 I+ n" R8 |: Q1 N! z
  127. ' z. F* N0 f' o* H' r! z; E
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")1 t" M" b+ W: \7 F3 }9 @9 O; S6 p$ z

  129. 7 j1 L. Q# U: W% e2 B
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    & B' H8 P& r3 d; _& t* ]9 L! w
  131. ) Q+ _2 s* I, c% Z
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    0 E( y: _. K1 l* b& V2 g: z

  133. , ^# q" R6 x! Y7 i( y3 l2 @
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')- Y" |8 Y% b4 P+ S9 e' d

  135. ! u1 G4 \$ z3 k
  136.                 image = get_file_content('/tmp/screenshot1.png')
      o1 i7 W) k% o  A

  137. 7 t$ B& |  t5 R5 G# O+ S
  138.                 a = client.basicGeneral(image)# ~: k, Z% ?* \5 V
  139. - Z0 j7 [# c& q- d4 n* o- F. B
  140.                 print a. p3 S! v$ N  S. T% @$ ]

  141. - ]1 p2 H. F8 y$ C% E
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words']): _3 U9 ]1 g4 p6 \; Z
  143. ) n# K& x+ Z4 D. Y! n4 F% d
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)& m* a0 u# l  c+ S+ \- l

  145. 6 d% }, N2 P, Y, J8 h
  146.                 yzm = re.sub(r'x',r'*',yzm)
    . Y1 I' e: v3 W' t, ]7 Y7 z/ R+ I0 x

  147. 4 ~! G/ |" c2 X
  148.                 yzm = re.sub(r'X',r'*',yzm)7 U; X. d  `2 e# T' w  c' h
  149. % _" O; Z- j5 h& C- \
  150.                 yzm = eval(yzm)
    : m+ b  k4 ]% e) R
  151. , s: Q+ J0 r. V1 ?9 w
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))3 i! U$ a8 @" U% k9 _
  153. 1 I, I9 U/ K6 O) v6 J! i, |
  154.                 print '验证码: ' + str(yzm)
    4 T+ `; A/ i( K. T0 t" j
  155. 1 r# a% N) G5 H  w& U8 m" Q
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
      ^! |2 u7 v0 e& \% B9 Y0 u

  157. ' f! y/ \- u! B" I4 v5 M
  158.                 driver.find_element_by_name('submit').click()
    + B  Q7 J/ H$ z3 {2 i8 J
  159. 8 ?( y3 B- J  {) i/ A% p! P
  160.                 time.sleep(3)9 z3 X/ ^: G% y
  161. ! q* V# L2 [$ d& }9 O1 M
  162.                 return 1! D! F, d- u) ~6 r3 C3 m

  163. ( N( M! F7 h* a1 }4 l' e* l
  164.         except Exception as e:* F; y# O5 U. T3 |( r. O" y& r1 u
  165. ! e. @$ o0 z; @# ~' I; M+ ^
  166.                 return 0% {$ \6 L: F( |% Z0 a2 e# X0 x
  167. : ^* n: r* p( k
  168. def followbutton(driver):9 D9 Y8 v! C9 Z. A

  169. , ?( e/ S! {, s2 W& @
  170.         try:6 y8 G+ v; t& c2 L

  171. 8 Z+ i# _0 ^6 a
  172.                 driver.switch_to_window(driver.window_handles[0])
    4 q- j' T6 L6 ]4 g& g7 |

  173.   d, ^, I; ?' X8 n
  174.                 points = driver.find_element_by_id("currentpoints").text
    ' n, z$ {& K. T: Z3 j0 q0 |
  175. . w  N  N! a, C  C5 ^0 {
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    0 G' c+ @- W6 E9 R3 l8 Z& X) H
  177. ) z  a) E0 r& N6 r" b
  178.                 driver.switch_to_window(driver.window_handles[1])2 X, Z7 X. w, l- R3 x) R# A' B8 z7 Q

  179. # f# i7 n  F. N) w$ {' @  h
  180.                 VideoSource = ''.join(driver.page_source.split())5 c/ |2 ^/ y! J- M: r- p9 v! E7 Q

  181.   N) \3 ~, M8 c" z; d, D: b
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    " R0 F) P( Q& b- }- ?7 D

  183. 9 k6 n9 i2 X4 A7 k" R% \
  184.                         print VideoSource* k8 _3 d: t% d1 t! ?

  185. & m$ d7 B: k5 \
  186.                         driver.switch_to_window(driver.window_handles[0])4 u* Y, s: Y* l5 ?  Y
  187. 4 Y- d8 @) u; e, ]3 b3 c3 Q
  188.                         print "Refresh..."
    # h" y, L- }/ [: F

  189. . O( x" v% S2 Q4 F3 p1 q
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    7 p& `: u) @# A
  191. , P7 ]% x! C. V4 ]
  192.                         time.sleep(1)
    8 |8 H) A5 g$ Z. h8 ~- S
  193. 0 Y5 C: K( r. U
  194.                 return points
    ; l7 E% L9 P6 V4 c' Q- T, A! h

  195. : I. M- [* ]9 {, Y" n1 C
  196.         except Exception as e:7 ?+ [7 ^% H- N

  197. * A: \6 F/ U& m+ \4 Z
  198.                 return 0
    ' c/ H' F2 O- ?7 M

  199. ' b0 ~8 T: ~! z- Q  \" k3 u1 G
  200. for i in range(0,5000):
    ; Q5 ?5 v" T# @& Y
  201. * }) E2 x8 J4 y. ^  K6 C  F' b" ^
  202.         try:
    ) p1 F1 ^% w' W. M4 R: h
  203. ) J0 C7 J. q4 K9 F
  204.                 captcha = checkcaptcha(driver)3 T7 ^9 A) r) Y) Z& ~5 X( q* r
  205. % J* g+ D( l: E! `2 b" s
  206.                 time.sleep(1). Z% h. x: h( m- H1 d
  207. & d- k. O$ G1 |* R, C/ @
  208.                 checkRefresh(driver)# e$ J1 A$ [5 O% y  w
  209. 1 e9 t2 E8 C) s. q$ ~1 b1 w# o
  210.                 points = followbutton(driver)& p5 x* w- |# J" a  k" ~( d
  211.   _9 c7 J  r; a
  212.                 time.sleep(65)
    & Y5 l" \0 x! ~4 g. G, }/ j
  213. . r* M  p" c4 B# T3 q
  214.                 driver.switch_to_window(driver.window_handles[0]): f) m- t+ }  }2 E8 {) S: k

  215. 5 I: ]$ h1 G4 I, x1 c0 |) W
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    ( t. U/ g+ }* M
  217. 7 y  V9 w) j- E
  218.                 print "points: " + str(tmpp)5 ?0 @) o/ r5 _. F; O
  219.   f* ]$ a2 |  O. T% O
  220.                 if points == tmpp:
    ( Z( T6 V5 _4 [4 @* i4 I9 R

  221. " E! a5 Y* m# C5 e
  222.                         print "Refresh..."
    / k6 m5 z2 i' u1 F

  223. ) V* j% M- ?3 i- |7 ]+ W& @
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    7 \1 U8 W5 y4 {# n4 o. r) ^
  225. ! p+ X: D9 J0 I3 s4 w
  226.                         time.sleep(5)1 R: P5 r5 J+ v$ w1 u/ Y

  227. 8 j3 M- {, a5 ^( k
  228.         except Exception as e:& R9 W& t5 h* P& n
  229. ; A% k0 Z6 P$ i( }* i, U$ F7 Q
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    " y' W' T: Z2 u# r

  231. # a8 s/ D+ i& _; b8 O
  232.                 print 'error: ' + str(e)
    9 N. ?. C+ S' b, o* {" C. _  B
  233. 5 d# _& A/ A( X# [3 I6 q7 ~# X8 g! h
  234. driver.quit(): c, x& h7 p' D  H
复制代码
; I8 d9 c* H, s7 z$ A
+ y, t5 K0 v5 Y% v% v* g
* m7 ^  }5 k+ _: o! J1 P
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 4 Z% c0 Q4 d/ D0 n0 \

8 F8 e/ Z& C. O2 J$ R0 ~

评分

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

主题

989

广告币

1486

积分

高级会员

Rank: 4

积分
1486

社区QQ达人

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

使用道具 举报

176

主题

1135

广告币

4197

积分

超级版主

Rank: 8Rank: 8

积分
4197

社区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
4 ]) \" A! |' O用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击
4 I( Z: J* s! F$ k* x
小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
9 |6 T7 A( ?6 h4 M7 l5 v# W
) B) w. B! N2 F/ j7 E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-27 01:00 , Processed in 0.055701 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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