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/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%
DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10264|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 8 ^/ Y& k5 v% h8 i' r. n
8 v$ Y/ u3 u: {  p3 |0 n( v/ P3 A5 b
+ c  J; n& y+ L$ |; G4 g  q
  1. - X, X0 Y& `" [( {. O" L  Q
  2. # -*- coding: utf-8 -*-3 ^. ~- o4 n' R% E1 a. y" P
  3. . D+ U! W$ l" s( R& c1 R8 B- W
  4. from aip import AipOcr9 o* y4 I: O7 [  I. q9 ?5 p4 d
  5. - C7 {1 d" |) r9 R8 L/ y! R3 F6 W, J
  6. from selenium import webdriver8 Y* O# v0 b; u% K/ E, G- U  R. G( \

  7. / x' O% d0 g; ?' ]
  8. import time
    + }$ L$ ]6 H* I+ _  \5 }$ K+ B  V
  9. 0 i4 Q0 L$ I! a" x# X4 D! ]  P- H
  10. import random2 j1 {, h6 ^. r. i

  11. ' y! C5 b; O; Y* ]
  12. import sys,re
    * p9 N* A- }& P

  13. 4 P( r5 P7 X* n, E2 e5 m! Q
  14. from PIL import Image, ImageDraw,ImageFont" F1 M0 I7 n6 F+ r2 g

  15. . Y( ]" G% l  V  e1 n
  16. """ 你的 APPID AK SK """$ s5 [) n. J4 B( ~4 N2 L
  17. 6 W8 e% \( G, ?- I
  18. APP_ID = 'xxx'* Y9 s) S" H4 j6 X4 j' C* ]
  19. ! c7 T, `+ B8 x* p4 I, ?6 l/ [" g
  20. API_KEY = 'xxx'/ l& W$ x( h7 I
  21. ( B! d/ R3 J+ c% _' G
  22. SECRET_KEY = xxx'
    ' r5 l/ J# x! |1 N

  23. ! ?$ H4 _2 M# |2 w% z
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY). R+ S/ U- u3 Q0 c& B, K

  25. 1 L! I; M* z+ u" \6 A: H- S
  26. #PROXY = "127.0.0.1:8118"
    4 Q* c5 L* P' P8 W- D+ P4 U

  27. ) X" R5 v# R. T5 H+ J* k; E; g" F
  28. chrome_options = webdriver.ChromeOptions()* o7 Z9 O  i2 z* a

  29. ( ?  Y- @2 C; C6 s- D7 x7 }
  30. chrome_options.add_argument('--headless')
    0 ~" v1 n1 Q3 g& T
  31. 7 G( y7 r4 a7 H( v9 U. n
  32. chrome_options.add_argument('--disable-gpu')7 I9 Q! R5 M5 R! A$ n4 r
  33. 9 e! @1 U! D$ \/ z5 q# W9 [
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    , S" _7 b/ Q3 x
  35. ; a- y5 ?7 K) ~& q' z
  36. chrome_options.add_argument("--incognito")
    6 }$ R3 T. \; }: K2 v3 a5 x7 u

  37. # u# E3 \- q- K5 Z/ D1 ?
  38. chrome_options.add_argument('--ignore-certificate-errors')+ a& y$ |" D# o& v, O

  39. 8 t) R( Y, U8 O  Q1 O
  40. # Win
    ( M$ Z: r* ~& K3 f
  41. 3 R0 C6 w% D5 T. C4 _6 b& @
  42. # chrome_options.add_argument("--log-level=3")
    9 T* v/ K! m% j- s. L" k

  43. 6 H( n& S0 m; H# H: }) C
  44. # chrome_options.add_argument("--disable-logging"). C) K% [* K% R7 {' A  V2 b
  45. ( n. m5 v' m0 {: L+ s
  46. # chrome_options.add_argument("--disable-logging")/ E1 }$ |6 i& ~0 f# d; `7 s
  47.   x$ l# D2 Q  X6 \- y! O5 D
  48. #chrome_options.add_argument('--no-sandbox')
    1 [) A$ k5 T. R( [
  49. * _7 \, M- m* a6 }+ v& ?4 y
  50. """ 读取图片 """- Z( M, y) T1 h" m$ J7 n

  51. 2 j5 Z" d/ [0 ]9 |5 S
  52. def get_file_content(filePath):
    * ?  z( z" i* ^5 H6 ~! U

  53. ( H* g) e9 M. r8 l) q
  54. with open(filePath, 'rb') as fp:6 c- V/ {4 P' L) W. l# m+ n2 x) I

  55.   U3 W  s& z2 \! v
  56. return fp.read(). S0 r- z1 [$ E
  57. * l- x5 k( E4 {, J. d
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    0 x9 d, V4 ]0 M( q

  59. * r& p0 H* S, v3 b
  60. driver.set_window_size(1280, 727)
      W% [  `* H0 E6 F

  61.   Z. c! D$ H, K7 X* N
  62. driver.get("https://youlikehits.com/")
    7 B- Z  E( w. _6 |
  63. ' s5 j5 c4 G* X/ T7 k- W
  64. time.sleep(5)! j5 m+ d; b8 x% d
  65. 8 s$ d$ u, ~' m- N
  66. driver.find_element_by_id("username").send_keys('11111') #user
    5 v  q" u1 B1 i. c5 \

  67. ! f0 l% k4 \& Z% d
  68. driver.find_element_by_id("password").send_keys('111111') #password
    7 s4 E5 o! u* h* a& G

  69. # y- v% n! ]6 ?" u* T+ a: u$ ~
  70. driver.find_element_by_xpath("//input[@value='Login']").click()3 D, v4 j2 ^9 Q2 w
  71. 5 l) S+ }' P$ @9 f/ O  C' t
  72. driver.get("https://youlikehits.com/youtubenew2.php")! S+ s- M9 X: [7 @2 x  U

  73.   x/ \' S& p$ n# c5 [5 U
  74. time.sleep(1)+ f2 ~4 c9 W& ?5 b

  75. : K4 z3 g% S7 @4 [2 u; l4 I' g
  76. #Try Again
    5 u3 ]0 o: o8 B, Z
  77. - k# F! b* R: s& ]" B5 d- ?2 W
  78. def checkRefresh(driver):
    ' {" n" V/ ]. u

  79. . V8 a% W: A8 T/ X1 |. a
  80.         try:
    9 U/ ~7 `: L9 R' o+ E

  81. " _& U1 U) s/ o/ ]0 }
  82.                 Refresh = driver.find_element_by_id('loadmore')
    , R0 d0 w4 W. C- K0 D" ?

  83. ) {1 p  [1 l& L2 M- `
  84.                 Refresh.click()
    - O/ G9 |/ Q. O9 ^

  85. * d. I/ P" O, I' U
  86.                 driver.set_window_size(1280, 727)
    : h% r" v( b4 |$ K2 I: K5 U
  87. . K# }' o9 M: b$ B# X- f6 M9 d
  88.         except Exception as e:. J; |) C8 u5 F

  89. 4 K" I3 y! m% M0 p/ y0 `
  90.                 pass
    6 m, @# c% y/ b0 Y. k. L, W% E
  91. # M0 L# q, u) Q
  92. def checkcaptcha(driver):; C5 J" v' Q' a7 r- U0 P1 f3 ]
  93. 4 J6 v, K, {5 E5 `) W1 v3 l
  94.         try:8 n4 Q- d( Y4 a2 n$ W
  95. 6 W4 g0 V! i2 l3 Y0 S
  96.                 captcha = driver.find_element_by_id('captcha')& C$ D. k( L3 Y! l2 L
  97. ! Q/ k( v- n4 c1 B) y& [
  98.                 print driver.get_window_size()3 t4 ^8 C2 c. j

  99. 0 n- ?: J" {2 n# s
  100.                 time.sleep(2)
      w. ~2 T7 E3 j' |1 z* d

  101. 9 q+ I# b0 P1 y4 l
  102.                 driver.save_screenshot('/tmp/screenshot.png')+ H# l% T' b8 T& ~5 y3 w9 y8 Z. ]- q

  103. ! T$ U/ \! h9 o. @1 U
  104.                 im = Image.open('/tmp/screenshot.png')3 r& A2 m; j( @0 C9 v( c; p" [

  105. + @- m" j+ }) n. K
  106.                 #取消headless模式
    - E: A9 @  R& C, g' w$ |
  107. + y: o' w. i/ j% n2 Z. O# k3 a; p
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    + `" z2 V, K) K8 [
  109. . J- \) f0 y- S* b* V
  110.                 6 Y3 T& Q9 r) z0 x4 J: i" [# D
  111. " [% J/ `' `9 {) Y
  112.                 #开启headless模式
    5 @: C6 m& ~7 j8 m& N
  113. 3 O; K, b/ m3 j; v: j" I  P
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    , r! _: t' c, A* \0 i. O

  115. ' A- g, t2 t& P9 P
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    . L. e9 c! s: L4 j( @4 T

  117. 4 R: r( g' A& ~6 |! W
  118.                 left = element.location['x']+ Q5 O$ c: ]$ r$ ]- _5 y
  119. # Z) x# v  Z# C1 C' g
  120.                 top = element.location['y']
    3 J- X4 ^6 T6 X* H& S
  121. 0 }6 J3 H. g+ T$ v6 p' Y; a
  122.                 right = element.location['x'] + element.size['width'], ]; |8 d  J' c' S* {* y) e+ h9 ?
  123. " |6 X3 T+ _7 U0 R* I/ y
  124.                 bottom = element.location['y'] + element.size['height']: J/ l- a- r: T8 y

  125. ) M  T9 ?* X, W' F' a& u$ g7 x, F" G
  126.                
    ; C! W! Q7 l1 ^: o9 A' u
  127. ; i  y- D* a5 M2 X! Z
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")  f. T6 D6 d8 y9 A# ^
  129. 9 S& W6 b6 H" o$ V
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    7 ?+ K! v0 D( @: Y$ w
  131. $ @, M5 e6 P2 A' |/ _3 P& F1 H
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    # i& z1 m% F* r7 H- p
  133. 2 I0 [- a8 g- h6 H6 d6 x' `  H2 ?
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')+ O# r1 g. I' ~6 Q" m% T* u
  135. 2 {2 c; t& J# u* ]' ^' Q0 r2 v
  136.                 image = get_file_content('/tmp/screenshot1.png')
    8 R6 u$ s$ ^( p1 R

  137. 2 V5 {6 x* a- N+ Y
  138.                 a = client.basicGeneral(image)
    ( w  L9 u9 l1 ^1 `) \

  139.   d  `, P0 t* H' J. I* s
  140.                 print a5 D' ?* W5 g) L, N7 ^( {# J# W
  141. ' p/ v8 u; h! ?6 e1 M/ H& F
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])& y. F0 s/ }. f7 Q( p

  143. $ @" r* a$ a; J$ z( [1 U
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    ! a5 K1 G$ G& R; l

  145. . v: K# i3 x3 U3 I$ Z& O
  146.                 yzm = re.sub(r'x',r'*',yzm)# e; e4 f2 e- E. e4 Z
  147. ! S3 W0 }$ r# e0 E
  148.                 yzm = re.sub(r'X',r'*',yzm)6 u' ^( j+ |/ K1 d

  149. 4 d" c- V( \( V6 I- K5 A1 R; z
  150.                 yzm = eval(yzm)  B& V, N+ ?% \
  151. ( u' a3 J) s, E3 e
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))9 b! k, D3 p: K+ t6 f3 M# r
  153.   [1 `1 I4 [, b: ?7 w) S+ N
  154.                 print '验证码: ' + str(yzm)
    " ]7 Q, O0 o, o2 C

  155. & ~: O+ g' q* z0 V7 o( @
  156.                 driver.find_element_by_name('answer').send_keys(yzm)+ I, U- \  C  B
  157. + }( H- K3 e2 C4 w1 k, L
  158.                 driver.find_element_by_name('submit').click()
    9 y* \. I; ^* h- U, O+ n% p$ d
  159. : t7 g* T4 d6 y( G' [# _: t
  160.                 time.sleep(3)' K* Y' \4 u5 }; |, Z# P) P/ N4 C$ N
  161. - f1 d$ }% K& z8 l; E3 p
  162.                 return 1
    # j2 s8 M& A! @+ p, h+ o. k; p7 l/ Y
  163. 5 N" z5 o2 i% C' F( B/ I
  164.         except Exception as e:
    7 r' r' y; \5 }$ e

  165. . }$ K! L0 U$ q& J
  166.                 return 09 F1 F! p, M3 H& `* t

  167. # x, D: ~# H0 Z/ u! V# c! z4 ~8 f" X2 z
  168. def followbutton(driver):7 S# J9 ?& c& U8 C7 Q5 Y

  169. - M' n2 {- b3 o; z
  170.         try:
    1 `; S: d% l. O) s$ Z& s. T5 ~

  171. 7 i) C/ n5 e; ?
  172.                 driver.switch_to_window(driver.window_handles[0])
    % }  |1 G% K: v) _" }) Z9 v# a# u+ r
  173. ) z2 s, @- u/ y2 e* z( I
  174.                 points = driver.find_element_by_id("currentpoints").text
    4 S8 V8 N5 t% G: L4 u# B) j5 F/ l; L
  175. 8 R& P1 ]9 u9 l
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()/ L2 [+ n" E8 F; v) k0 F& R5 \" l
  177. 0 M: `) n; k% r* Y# Z& e5 y
  178.                 driver.switch_to_window(driver.window_handles[1])
    + f0 B* ^; T6 t! R) q  o

  179. , ?5 k. M7 N5 Z3 |
  180.                 VideoSource = ''.join(driver.page_source.split())
    6 i! x9 P$ G$ _( y5 a$ x

  181. ( z$ d) m/ ^7 ~% |9 j6 k
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    0 ]' o  D) R, ^) ]  F
  183. 6 r9 |  p- B/ k8 w; @# V
  184.                         print VideoSource
    7 |' o4 y/ X4 G. P  s% X& Z3 X

  185. 3 P- Y' ~& d4 w; t( _" R+ f5 c% j' ]- _
  186.                         driver.switch_to_window(driver.window_handles[0])
    ; R6 P/ V  R5 K3 p
  187. 1 m" R: M3 l) {- o" Y
  188.                         print "Refresh...". Y) D4 `  P' p2 e

  189. ) @' f. u% ]$ |
  190.                         driver.get("https://youlikehits.com/youtubenew2.php"). Q1 C3 t* m/ U% ?
  191. $ J5 x$ o/ Z1 T* M* V' X2 K
  192.                         time.sleep(1)8 j* i( K/ ~8 }! {# r

  193. " N) k6 l# x. o
  194.                 return points
    4 \6 z/ q% X  u- g1 O9 i; p
  195. ( @1 I# W0 W& w, V2 E1 d! z
  196.         except Exception as e:9 |8 H3 H1 r+ K4 {- k

  197. , D/ R  C- V3 _9 d
  198.                 return 0
    5 Z2 |$ L- B( V
  199. 0 [$ ?8 H7 n: \7 A& c
  200. for i in range(0,5000):* h9 ?- r4 _' D0 L+ D3 {+ G; h# I  ~

  201. $ [1 a7 ], R/ ]9 S  A/ U8 @- x! L) ^
  202.         try:' Q1 d3 x+ v5 M% {7 [1 ^) [5 z4 F& O

  203. " k; B  q( }$ {4 }# \  {& b4 T
  204.                 captcha = checkcaptcha(driver)
    / @. R6 n! _) Y2 W) A! f! w; f$ c
  205. & S( n7 p* X# C% K
  206.                 time.sleep(1)5 h! U4 T8 ~* i) x& q

  207. # C1 k. z" [- j1 R, y
  208.                 checkRefresh(driver)# k! O( I/ ^$ M8 z
  209. 0 ]6 \9 U% F+ K7 m: U
  210.                 points = followbutton(driver)* Z9 X5 a% E3 }  d5 S; ~
  211. 7 M5 G$ R& E3 P1 T: x: n
  212.                 time.sleep(65)
    9 l. |/ {: C/ a+ @
  213. ! D0 }+ t/ z! J' }% N: r) y* o
  214.                 driver.switch_to_window(driver.window_handles[0])
    8 T$ s5 D1 ]  M0 {2 [# I+ T
  215. 4 \) K8 N7 x- T" X) O" x
  216.                 tmpp = driver.find_element_by_id("currentpoints").text0 B/ B- \$ f. m- H  H+ O  d
  217. ! @% f0 g/ ?- ~1 r/ R) p; E- |
  218.                 print "points: " + str(tmpp)
    % U: ~2 ~  P3 \1 N$ G( R; H* X% S5 i
  219. ( M9 t/ b- q$ T+ c, ^8 U" [( O
  220.                 if points == tmpp:
    2 K( P# @+ }; ?# ^( c# u* y0 ~

  221. 1 P. e$ w( |+ F. H' m
  222.                         print "Refresh..."0 T* g0 }$ X/ A: F' t

  223. - N+ i, ?; i. V& ?) _5 e+ k/ r
  224.                         driver.get("https://youlikehits.com/youtubenew2.php"): T4 A; H7 Q& w; ]' T' {
  225. . N9 I4 Y, J* q1 f; P+ \
  226.                         time.sleep(5)- u' Z+ m: z4 Q
  227. & W7 U$ l; G# x, h3 T
  228.         except Exception as e:
    6 E$ Q7 l& K! T, J3 H6 c5 t$ h
  229. 9 C( U" V4 I  K# \* o, l
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    8 w/ L4 l. m5 G

  231. / j4 J7 D/ h. v" @3 Z
  232.                 print 'error: ' + str(e)6 M' p' M9 D+ o0 G/ [; A
  233. ( [; x* Y# a3 C' T
  234. driver.quit()3 n1 A7 y9 [, v: h5 p+ j. D
复制代码
6 ?/ s$ I: ]  w3 @: X1 j

) @7 n- D2 H1 O+ N7 m5 M& S  q! K$ x, B  t
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 , S% _% t$ e3 @! b: W, ^. D0 Z

3 T3 w$ j* \. Y% G

评分

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

主题

1019

广告币

1515

积分

高级会员

Rank: 4

积分
1515

社区QQ达人

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

使用道具 举报

176

主题

1176

广告币

4238

积分

超级版主

Rank: 8Rank: 8

积分
4238

社区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/ u, z% N8 B1 _/ V- |# g( U& G
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

4 ?2 V0 }7 A0 F小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈" o6 n7 C+ E% }+ v( P  j
7 H1 ^$ l6 P3 t7 X9 a% z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-5 16:01 , Processed in 0.049621 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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