AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化⚡️E.PN 虚拟卡⚡️FB BM不限额,短id账单户BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户提供TK企业新户老户、谷歌新户老户
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量优质住宅/移动代理/高匿名/高性能TK白名单老户|兼职广告可投
⚡比特指纹浏览器+云手机, 4.5折起T3NZU:定义应用网盟新时代FB个人号源头服务商寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 10189|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
HuiTong虚拟卡
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
% \' D* ^0 R  O% O! M2 V
1 d* K2 ^0 g1 w! M+ i
& i4 H" c5 N+ f2 X
  1. * g( j8 s" j7 n% o0 }# F; i6 @
  2. # -*- coding: utf-8 -*-
    7 X! ^. S7 |  ]: e: Z/ N+ p& y+ p
  3. ! @1 d) H7 ~* V  r) g+ `8 h  K
  4. from aip import AipOcr
    , V" [" r' @' E5 S3 X4 Q) m/ V

  5. ) e* t1 K+ ^0 z" z$ t% ~7 ^0 m5 k
  6. from selenium import webdriver
    0 \. p, l4 v3 U3 q0 F$ Q7 \
  7. . s# L0 e! w8 [/ ~4 c
  8. import time. O1 }; j2 Q7 \/ z, q
  9. ' n' Z) e, R& x# ~2 r. H- ~8 s
  10. import random
    8 c0 V8 z5 p; u- {2 z3 O

  11. - z& u& b6 u" m( d* o! S6 @
  12. import sys,re; `8 o) ^7 b5 ]: S: i3 R- n
  13. : p+ \4 ^. b1 Q) Q% l$ m7 n
  14. from PIL import Image, ImageDraw,ImageFont
    - K9 ~# v3 Q: l2 y. F0 `" N

  15. ! J( k$ r. S/ L2 L6 {3 C, @5 R
  16. """ 你的 APPID AK SK """
    4 }8 x5 c7 A" m8 Q# Z6 b
  17. : E# _4 m1 @6 w! K2 \% H
  18. APP_ID = 'xxx'0 B. z6 U7 r9 w  h" F, ~  V7 G( S$ M
  19. : n( Y0 F$ A3 C+ o( w5 c# I; @. z5 U
  20. API_KEY = 'xxx'' k" t; _. m7 ]1 o- }5 x3 {; O

  21. $ s% b. n% }2 s  P" Y
  22. SECRET_KEY = xxx'0 l+ c2 m$ A: j/ Y$ o2 U% M6 x4 g

  23. 2 }% ?: y, W( a
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # j2 Z" w; R8 |+ [, {/ x: ]
  25. ) M; R# _4 e- x+ d
  26. #PROXY = "127.0.0.1:8118"
    " T. E% [* Z1 z" x- B, h% ]8 [4 B3 p

  27. & W2 A0 d5 o4 X/ i0 [  G. ~
  28. chrome_options = webdriver.ChromeOptions()
    + j6 u6 H7 P' r
  29.   y; L7 X& x5 Y" i3 w
  30. chrome_options.add_argument('--headless')
    1 }% m/ g& I7 ^$ y) X
  31. 9 X1 D; i( y& j
  32. chrome_options.add_argument('--disable-gpu')
    / O0 b1 X  u7 X' D1 s
  33. ! _6 ^0 p. h* B+ p. v
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)7 b9 f& Z- t+ P. F
  35. ( U8 q: l+ c7 }
  36. chrome_options.add_argument("--incognito")7 I; W4 ~/ v+ |" p" {% w
  37. , E& P5 x: e; U; i6 a* k
  38. chrome_options.add_argument('--ignore-certificate-errors'); M2 h8 c4 S1 t% `( U& A
  39. & D4 r. C5 \" |1 l' F$ r! ]9 o
  40. # Win
    + m2 k+ E/ X: K  F) @
  41. 6 ~1 _! J: W) J- o6 k) w  |
  42. # chrome_options.add_argument("--log-level=3")  _( G! e6 Y: g5 t3 `5 \* O  A8 g

  43. 9 I# P( M" f8 F/ H8 E; E
  44. # chrome_options.add_argument("--disable-logging")4 d5 Z& t0 B) R
  45. . Q+ t5 U+ @7 [. Q; P7 ?3 l
  46. # chrome_options.add_argument("--disable-logging")3 H+ l6 g( j0 t6 q. e

  47. 3 `8 [: [: X: B6 i6 f
  48. #chrome_options.add_argument('--no-sandbox')
    ; f1 f9 B5 x9 e; i6 H
  49. , @- S. z- a2 p
  50. """ 读取图片 """
    0 R: |# Q( J$ L" U
  51. " G% f! ?/ o7 {( O- b/ m. s- s
  52. def get_file_content(filePath):; Y. h1 ]2 G  x
  53. 6 e# P  b' {; k' ]& D
  54. with open(filePath, 'rb') as fp:# u) K1 X1 W  S! [2 ~  ?
  55. & l" M: w  \. |# C9 A$ \5 F* b
  56. return fp.read()
    % M3 F$ m9 F$ x- I6 L# o" G& ?

  57. 6 E4 A7 V: ~$ d7 @
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    ' `. U9 l7 V% i1 ~8 a# j: f5 R9 n9 d

  59. ( F. p# ~2 f6 }$ l
  60. driver.set_window_size(1280, 727)
    ; [( n8 a! Y, a8 ^6 N
  61. 4 r8 M5 ]* j- f, T
  62. driver.get("https://youlikehits.com/")
    , `8 P# k3 O4 u; {5 z

  63. % a; e! C  A/ {5 K) z6 G
  64. time.sleep(5)
    - }3 Y- V. b) _/ i6 U3 k, k3 b

  65. . i  n) g  _5 \, W
  66. driver.find_element_by_id("username").send_keys('11111') #user
    ; N1 g& e6 j7 ~, }  H
  67. & L  m; x3 }% M
  68. driver.find_element_by_id("password").send_keys('111111') #password
    % c8 {6 w  a2 ]
  69. - r, I% t/ M1 D, r
  70. driver.find_element_by_xpath("//input[@value='Login']").click()9 K" F; [6 q0 \
  71. ( t" \9 {$ T5 R4 T+ p6 I
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    4 ^6 T) K) ]' t& T6 s. g

  73.   ~4 J/ @: @' b+ m8 M' o
  74. time.sleep(1)9 }5 \9 v' U8 X' _& `' I
  75. 1 ~, Y' B! U; r8 c8 u: C8 f( {) n
  76. #Try Again1 d# v. X+ V4 u" {  z

  77. : F  ]3 i6 e: w2 {! H( d
  78. def checkRefresh(driver):
    : a' c) ^0 B. f) z4 r! c$ M9 ~2 X* e
  79. ' @* ~, `( `  y2 n' H1 p, D
  80.         try:: @) s$ Q$ V) |6 v8 C5 z% C0 i6 W
  81. ) d& e; h! P. c2 V- S6 F
  82.                 Refresh = driver.find_element_by_id('loadmore')
    ) J" z$ j5 m7 F) Y$ T% E

  83. 8 g7 J7 j9 O6 X" \4 y1 G# s
  84.                 Refresh.click()6 @. d: c, A$ X3 I3 p5 q

  85. + a* z: K; H4 V: F; j! l
  86.                 driver.set_window_size(1280, 727)
    . T: O# g' [$ _0 P

  87. 6 Q% r& j" X/ u% i& z
  88.         except Exception as e:
    1 [4 K& W% z0 w  `1 m4 g

  89. 0 p. H9 ^% |' \6 T% L% K. z
  90.                 pass* F* X+ g2 X; W3 ]! \
  91. 5 |5 q# Y; w' S" L
  92. def checkcaptcha(driver):0 w! G$ a/ v/ n1 S4 S
  93. 0 t& ^& U, v0 \  f" R
  94.         try:* r) c- i) W3 G+ [6 U: E. R$ @/ U
  95. - |8 v$ C: w) K
  96.                 captcha = driver.find_element_by_id('captcha')
    3 e. d9 M, x# L

  97. % _! }: U( [5 o) Z
  98.                 print driver.get_window_size()
      Q" ]; v# T, K( o) q$ H) S

  99. 2 P6 W) ^, D! Q5 k
  100.                 time.sleep(2)
    & D' [& B: M8 ~! J

  101. ) c( ?! d6 u- Z! V
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    6 |: T- R& `7 Q+ z; x' {' P4 T
  103. # I! {; K* |7 g, G8 S+ c: B
  104.                 im = Image.open('/tmp/screenshot.png')
    - G6 o& {# N% M! j6 C2 W2 I! H

  105. 6 n6 b, _( y2 j- P- R
  106.                 #取消headless模式+ Y3 R# c" j9 ^6 H3 d' ]/ |

  107. # S- y, I+ ^7 e1 g" h& w5 Q  j4 D
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)- n6 K" w' S1 f- H, E2 Z

  109. + a, u* }7 f& o# H; [$ z# n
  110.                 . [- a2 _! k/ f. p- H
  111. , b: o, x  E) ^- g5 {1 u- p6 d
  112.                 #开启headless模式
    ) l9 V" B4 j' q% ~+ t

  113. 5 e/ a: g  R: y6 F+ ^
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    - Z' L, T2 X& w# L1 U
  115. : x! ^4 s0 L# p, u( _) P' m
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")0 V1 j. g, Z& ?/ s& {2 l! f

  117. 3 z& w6 F8 d8 w
  118.                 left = element.location['x']) D( H# F' v( f) z. G3 c( d

  119. * a) H; h0 G: [* d: ?* s# ^
  120.                 top = element.location['y']
    7 `/ [9 t* u- y0 Z: c
  121. 0 l8 X- ~3 [' F. R4 ]- l) t
  122.                 right = element.location['x'] + element.size['width']
    , d4 p: ?1 m' y9 u/ Q2 H

  123. 9 w: o; V1 b, k2 j6 L7 C* h
  124.                 bottom = element.location['y'] + element.size['height']6 k4 K+ q; G9 ~0 r. \, t

  125. , e$ b: g0 L/ g1 A
  126.                 $ |: g5 b  G& ^0 `5 R
  127. 2 @1 J6 B; I* ?  b' n9 D
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")8 J1 q" D% ?$ m; d- H9 L4 V

  129. / ?! n3 }: @" ^, C* x6 e
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    $ j, M3 a: ?0 u, |" e% ?! W& Z

  131. 9 r- z# a- q" v5 O7 R
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    , J/ `  A9 ]9 Z& F# F2 N
  133. 8 u4 m5 [! [( c8 a' y& v# X
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    . j) Y/ A: E1 V, m2 G8 A

  135. / ^) A: O8 z2 r4 y
  136.                 image = get_file_content('/tmp/screenshot1.png')
    2 S) t# c: w: ^
  137. 9 q- {$ y7 L' U3 L
  138.                 a = client.basicGeneral(image)
    ) N! z- b& B! M; k. m

  139. 7 v6 B- L. I! A2 v
  140.                 print a
    3 ?9 k# f/ H/ h7 v2 }: H) S& Y

  141. " X# E/ V" b; X7 X
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])7 p/ O* P. w9 j+ E

  143. # A0 b2 Y! Q. y. T
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    . W6 m. O  {- L9 @6 ]

  145. * i2 G3 D$ Q# W* v  k: e8 c
  146.                 yzm = re.sub(r'x',r'*',yzm)
    # H, m, i' Y- d8 h. Y

  147. ! q  S1 v% M1 m0 n7 c
  148.                 yzm = re.sub(r'X',r'*',yzm)( c8 J. ~+ ?. S5 Y. }

  149. ( ]+ q- k! s+ h7 y$ M& L8 Y
  150.                 yzm = eval(yzm)" y. O4 U8 T" V& F* V
  151. 8 [0 J% B! W$ N1 q6 l- |8 J: e
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    2 l0 r, Q7 m, y+ _
  153.   F/ H/ C( Y4 B* t
  154.                 print '验证码: ' + str(yzm)
    % T1 x$ K- m8 F, ]2 W( |1 @
  155. 7 v7 q7 Y3 |/ n. W% r6 Y
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    ) L+ I4 P9 Y5 @3 {: S+ F. s5 Y7 p

  157. $ o2 F8 K/ j, ?: j0 u0 B
  158.                 driver.find_element_by_name('submit').click()" `9 H/ V! b% U, C* L2 `

  159. ; g- Y8 X$ L$ [
  160.                 time.sleep(3)1 A- t! d( J+ ]6 w9 T
  161. 7 ~' e$ a+ w$ O. m5 E
  162.                 return 1
    : H8 W$ v1 W2 ~+ S% M

  163. + _6 I: Q2 Q8 l: x! o
  164.         except Exception as e:7 g8 K( n! L: t+ y

  165. " v6 Q% p5 [1 \
  166.                 return 0, k0 c& T/ q' X! |* _7 d$ F

  167. / D/ H. u% q0 B3 _, W
  168. def followbutton(driver):3 ~8 [8 e" |3 R" N4 C; g
  169. . `+ `- [) y  S/ |3 u) A
  170.         try:$ e9 ]8 f  c" c2 @0 a5 f

  171. # a, P* z0 Y9 q$ u% q; ^9 @1 b) H" s
  172.                 driver.switch_to_window(driver.window_handles[0])' {# n$ g& g9 @8 P9 j8 d, \
  173. * I9 {/ k/ O4 G6 ^% A* E
  174.                 points = driver.find_element_by_id("currentpoints").text
    4 Q7 N1 m" _& i1 d" a% s. I, ~
  175. ) u1 A) M0 b, R& |. `
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()- E: ]  r; D6 G$ {8 @1 L9 C% |

  177. 2 E% B5 k7 M" s9 O, p
  178.                 driver.switch_to_window(driver.window_handles[1])
    ) p/ e, G( L  p3 T7 U

  179. : x1 f# V3 |' @
  180.                 VideoSource = ''.join(driver.page_source.split())
    5 w" Q) X0 x3 n7 e- V: j2 v, P9 y

  181. , y; c$ r9 q9 t' b1 A
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:0 ~: `; @8 G4 Z4 N2 S& |

  183. ! b! W$ k+ C; s6 E3 A, d
  184.                         print VideoSource( ~1 L5 T, f( B  w" |
  185. 7 x3 A) E& A" l1 Y
  186.                         driver.switch_to_window(driver.window_handles[0])& K; j' u8 |' d9 a
  187. 3 K1 I# y' i8 P4 K7 N$ l
  188.                         print "Refresh..."
    5 s' W3 e, k2 L6 S! v
  189. * z/ V5 `/ r, |
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    2 t# c& k- Q' ?
  191. 5 F! i1 k. Y4 S1 O9 Z) o
  192.                         time.sleep(1). Z! w; T' v/ D+ |3 \
  193. : v: M9 {7 w( G) q
  194.                 return points9 |; d3 h. a/ _" t) }! p% N+ @% X) E; P
  195. 9 j: p$ {5 {% D4 ]6 ?# W' N1 n
  196.         except Exception as e:
    ( A7 s6 u5 d! C$ B* @7 S/ u
  197. ) p+ B" ~8 N' J" k6 m
  198.                 return 0( \0 h5 X8 k6 \1 M/ d1 z8 C7 r
  199. : n+ c: n2 [/ p+ \( ~) q
  200. for i in range(0,5000):
    / ?8 V5 ?7 x6 @, J

  201. 2 r( v! r  `+ W* t0 |8 G4 h
  202.         try:3 Z4 ?( V; v0 Y5 p8 A* Z
  203. " |+ X8 M9 d& O0 a/ I2 V$ u/ g/ s* F
  204.                 captcha = checkcaptcha(driver). R; N" W$ Y+ X
  205. ' f5 i  o/ C# f5 j' N
  206.                 time.sleep(1)( V7 v! f  i; Q& U* `. A* X" b

  207. + z9 E+ ?7 M; t& g) r6 `  K, b7 F
  208.                 checkRefresh(driver). N) u) c+ U; @$ n! j. n+ v
  209. & Q! i8 H* b$ Y; U
  210.                 points = followbutton(driver)
    3 P, {) E- z; {; d# j3 s+ `
  211. - y  M5 C- e1 f# z& R+ \0 u, x
  212.                 time.sleep(65)
    $ Q: @0 b% u6 B3 B. |! @' u3 L
  213. * v! M/ S) y: ^8 y/ I
  214.                 driver.switch_to_window(driver.window_handles[0])9 }& r, r5 o" o$ w5 q! _! y2 T8 x2 C

  215. . I! Q" {: p) r% B5 b5 i
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    , G5 t  k0 j% ?
  217.   R- l" ~: i; v# F/ w3 A
  218.                 print "points: " + str(tmpp)
    : d9 x- ^. W. R1 ?

  219. + z2 A) ~3 Y  b
  220.                 if points == tmpp:
    0 R3 k4 T: E/ t+ i( R5 ^4 X

  221. - T  D( n0 Q, v  ?2 ?) D! ~# {% _
  222.                         print "Refresh..."7 [. _  _% m+ m! f! N+ k9 P
  223. ( |$ e8 Y( J' _& G; T; E
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    8 `9 M" C1 T& \" n: F6 W, M

  225. ! L3 V8 f! y2 X, E) q! Q* k, W: y
  226.                         time.sleep(5)
      m3 h* O% n: u9 f0 ]. Y8 ], k
  227. 2 Z* r; X& i2 |+ f5 F: v) p
  228.         except Exception as e:
    # H' o3 V0 m+ D8 m  `. |

  229. 7 d1 ^1 G- ~+ j6 ?. A( p1 K2 F
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    & I" T, K- K; @$ M& E

  231. 7 @' _3 P4 G( I6 f% o% o6 Y
  232.                 print 'error: ' + str(e)
    6 H: y, _& y) K* D* t

  233. 5 m: _3 h* D  V0 h0 B1 V
  234. driver.quit()
    7 G$ }9 M: q* K4 l0 J* a
复制代码

* B3 x& g) Y+ @
# [, R; y+ r# u4 y  o9 Z+ c# v/ ?0 h
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 3 Z  U/ ^9 n. P8 u/ H

5 O$ k3 `$ F* h" r( o* f3 x

评分

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

主题

1001

广告币

1498

积分

高级会员

Rank: 4

积分
1498

社区QQ达人

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

使用道具 举报

176

主题

1160

广告币

4221

积分

超级版主

Rank: 8Rank: 8

积分
4221

社区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, i! v% v3 C' r- \$ u& V" j
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

% h4 w8 z0 t. M小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈; H- H& [, n* b3 Q/ u: ?5 H% m. ~5 C5 e/ ~

0 U/ _3 m: K8 C1 H' J+ S7 L3 y7 E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 23:12 , Processed in 0.062794 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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