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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手
TK加白户/二解户/FB海外户/GG老户海外CL企业户源头最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审
TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇
域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 10318|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Binom_AdvertCN
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
1 `. l7 L5 z" u0 c" E2 ]' w2 I' R
9 ]" P9 e' ~) K3 j1 E" L2 u+ K! W7 J' [8 w0 D# @: y8 N3 l

  1. " F' s% O7 @$ y( I
  2. # -*- coding: utf-8 -*-; \* y+ v  K5 i# F
  3.   q2 O- I7 _+ `# i0 w9 \- O+ e
  4. from aip import AipOcr
    0 _) x- Q- e' u3 j

  5. 7 b( ?& ^$ A$ `/ a' p% q
  6. from selenium import webdriver
    ( }4 _. ?" [. |2 F( E. ]: A

  7. * Z3 I" b  E( U  U' s* Y: O
  8. import time3 ^( L# k" c' s  r

  9. 8 |& K( K6 O' x& W9 a
  10. import random
    7 u) F5 p. z: R, a% A& ?
  11. % I: |, e. W0 Y/ Q
  12. import sys,re
    % M9 P  f- |9 |/ O- W
  13. / C& T6 ^' ^7 h9 p0 [# r
  14. from PIL import Image, ImageDraw,ImageFont
    2 P" o! T5 Y/ o( a+ c
  15. 1 ~, ^1 t7 t" p/ h- ]6 I3 K
  16. """ 你的 APPID AK SK """, y6 p& c4 ?9 Q  f0 K. }+ K2 I
  17. , v$ q: ^& A! j5 Y4 N& n: z
  18. APP_ID = 'xxx'
    / p/ A1 `+ L- v
  19. 7 f% _1 g# X6 x; j
  20. API_KEY = 'xxx'
    0 z9 p$ j! J6 F1 Y' ~3 z1 }% o
  21. 7 z; X5 Y0 F! J6 R0 k
  22. SECRET_KEY = xxx'
    , `/ G' b. ^3 B4 P

  23. * ^- z" T3 v! [- r
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)7 u3 m6 ]% x. [
  25. 6 b; k. J& b& H, d+ K
  26. #PROXY = "127.0.0.1:8118"
    * ~/ Y! w6 O: S( R" `: i1 U

  27. " o2 x) _* c* }3 t( D9 J% q
  28. chrome_options = webdriver.ChromeOptions()8 m' l( v9 c# P/ e! `: t3 J
  29. % \, L0 J2 ^* Z( P0 |4 a4 B
  30. chrome_options.add_argument('--headless')
    $ i7 p3 f+ _1 {1 _1 h- ^, f+ k0 x

  31. , d& l3 }& ^  c8 B# ?
  32. chrome_options.add_argument('--disable-gpu')7 [; r2 A% j% s3 P
  33. + f8 _; {+ E: {0 \$ l
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    8 \& L* q' R' r+ D
  35. * @) J# ]0 f/ X) ]0 h$ V2 v" \) m: a9 r. S
  36. chrome_options.add_argument("--incognito")0 J" G) o! B: J/ u
  37. 8 U! I- T, J- v
  38. chrome_options.add_argument('--ignore-certificate-errors')8 d7 x6 J& Q2 V" b+ B* ~
  39. 7 N0 V0 S  K& N% l
  40. # Win
    9 v) s: l% @- p) s5 N6 J8 D

  41. / E  B6 I, B& u9 x6 |  t
  42. # chrome_options.add_argument("--log-level=3")
    % c' ], w0 _& X' H( w
  43. + B& X! A; b" c: H3 D- I
  44. # chrome_options.add_argument("--disable-logging")
    , K, y8 J1 e6 `9 ]

  45. ' a! B& v* L& o7 _% M9 l  s
  46. # chrome_options.add_argument("--disable-logging")
    . h1 t% Z# @' O  L
  47. + ]: i: a8 n% j% `
  48. #chrome_options.add_argument('--no-sandbox')
    % b6 k! X9 P& B# o7 @
  49. 2 o! x% Y7 |* z
  50. """ 读取图片 """
    0 y& V  ~+ b: h8 r' z9 C6 i

  51. ( Q+ U: M* a& x+ e1 |
  52. def get_file_content(filePath):) Z& @1 {  c6 K: f3 f
  53. 8 E& ^) n+ H$ S7 j* A
  54. with open(filePath, 'rb') as fp:
    ; K4 P3 E+ H# B: ]2 p) m+ S

  55. 2 w& R9 m3 t) E0 _3 h
  56. return fp.read()
    : K- n7 R# ]% z0 o

  57. ! g. Y6 w# R8 m! w( e* x; P
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    9 r, w  Q+ {# E/ r
  59. 6 A! q9 A$ a: Z& a
  60. driver.set_window_size(1280, 727)2 B0 F( D; Y4 I! U7 G/ R) i: i$ _$ o
  61. / `  N8 V! B2 F& H) B" }
  62. driver.get("https://youlikehits.com/")
    / p9 r' \' R) _5 ]

  63. + \- E. B& C9 t$ B* o
  64. time.sleep(5)) x  M5 t! A8 d& d, n" ~* c
  65. 1 L9 {4 g8 Y' u/ O! }
  66. driver.find_element_by_id("username").send_keys('11111') #user' y) m. o4 T- d' L- m9 H
  67. 4 n& I; K4 e6 J$ |6 b
  68. driver.find_element_by_id("password").send_keys('111111') #password* ^% D( z4 U: ?4 {

  69. 1 h0 Z- q8 H& k  k" I6 o9 T
  70. driver.find_element_by_xpath("//input[@value='Login']").click()1 `+ e2 ^  T# L! Y4 R0 L0 r
  71. , H& r& {6 h' b4 ^+ t0 g! J6 M
  72. driver.get("https://youlikehits.com/youtubenew2.php")& O: E, k# o) s* _  `6 J" g

  73. , u  z1 L' I3 L" A
  74. time.sleep(1)
    1 c  @! t/ g2 c* p$ V, s
  75. / @, }. C" _; e* {4 |
  76. #Try Again
      P) ?7 w; ^" n% L5 n7 n, R

  77. 2 }" {, c. E) ?: y# r4 l5 ]% D
  78. def checkRefresh(driver):
    5 t$ c' U# ^" m+ N$ Y: L; b$ T- @

  79. 3 P7 {( A* E; u/ H) R) T( \
  80.         try:, Q; w, b; Q# ~& S# ~
  81. 8 S( R5 Z# h, z, S
  82.                 Refresh = driver.find_element_by_id('loadmore'), w" o( z7 c+ w( d1 N

  83. * M9 M5 ~! ?& X) q/ k' [0 z
  84.                 Refresh.click()
    ( [3 S6 u' _1 t! s( G
  85. 3 R$ V: k4 v8 g$ M& ^
  86.                 driver.set_window_size(1280, 727)
    $ W# \, {# j' M% k6 ~
  87. 5 m+ n/ e. E; K& J* u4 [3 ~) n+ N  p
  88.         except Exception as e:
    7 E1 g" o9 A2 ]
  89. 1 d+ p# a) A8 g" f1 B) K1 m5 J) V
  90.                 pass
    # N/ l8 s; L! U* Y( X
  91. . ~) \2 D5 o" j7 I
  92. def checkcaptcha(driver):- V2 V, k8 c: b8 l' I5 n  r
  93. . V( c, L6 `% L) z8 j: q
  94.         try:+ M' s: g3 u" s

  95. . A/ M8 v- G$ d) w) |; w
  96.                 captcha = driver.find_element_by_id('captcha')
    2 Z$ S. ^  I; z1 C. o( |  M
  97. - g' Q3 `6 f$ V/ U
  98.                 print driver.get_window_size()
    # e5 ~7 y: F* M

  99. # n9 y9 Y# |0 j4 L( \8 a
  100.                 time.sleep(2)
    ) \0 I- P0 w% Z9 v5 Y% s; b

  101. 6 D  b2 i/ w" G. L* f" P- |6 l2 c
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    / z$ J! _: a5 A( c  b

  103. 7 J6 M( n+ q5 C0 `- \3 l
  104.                 im = Image.open('/tmp/screenshot.png')
    4 {% |+ O+ M! d5 _
  105. ; w8 N7 \: X8 G( w
  106.                 #取消headless模式
    4 ]2 \- o7 E* N
  107. / n4 b, ?; }$ U0 E6 {
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    1 K/ m" s: I* }: ~! u' r; E8 Z
  109. # J6 `" P6 d( J8 t  w; E7 G0 p
  110.                 0 O6 x- \) e; e0 x  E
  111. ) U4 W) U' I% y. D+ g: t
  112.                 #开启headless模式: c, x) l5 ?: I) O
  113. 2 n+ _% z8 R. L4 Z& ^  g
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    / o; N* ^# D; y

  115. 1 ]- i  u/ {: ]4 c: L* s9 @( V( c8 a7 I
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")* _1 h+ G$ ~: R; g7 W2 ]
  117. 5 v' _, k6 V* O' [3 d
  118.                 left = element.location['x']+ V2 }& o" K. p2 @7 J

  119. ! L$ e. C5 Q8 T  d( z
  120.                 top = element.location['y']
    : |( T% n5 h0 k4 h

  121. . s0 Y% [+ `4 w$ I
  122.                 right = element.location['x'] + element.size['width']; ^% U! g7 |, S6 k  W& L% l

  123. 0 g; H, r8 L2 ^2 F2 d% n  F( \
  124.                 bottom = element.location['y'] + element.size['height']
    , {0 S+ A8 A5 `4 `" `; b
  125. 2 ]8 `6 H+ L9 ^. W
  126.                
    ! Y; X3 |7 l- Y" \
  127. $ C7 ?; D) L8 X& i  G) L) j6 z6 A" [
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    0 ?6 k- k2 C- J) q+ a3 ~

  129. 6 ~4 C) }% a* f  M5 U
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")5 K1 B5 i! h2 m4 M3 f
  131. 3 i& O$ o) ?1 e0 ~! g' i, ]6 Q
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")4 e# G% }2 O% `  V' a
  133. - C6 F8 b7 r+ ?- h6 T# f
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')3 d$ i' e+ O3 D2 }# d7 d
  135. 6 R/ ?6 v" a/ M% H! B! }+ j" r
  136.                 image = get_file_content('/tmp/screenshot1.png')
    . u, e3 y0 Q9 f8 W* h

  137. $ y+ k# Z' m& t  l
  138.                 a = client.basicGeneral(image)
    6 Y4 K* {: I2 C
  139. 7 _6 f; M9 M. r. W; S
  140.                 print a8 }' I. L7 R9 U+ H  A, P

  141. 9 H+ J/ q; f; m% [* y8 u" N
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words']); z) p  [& E) G- d$ y! d# s

  143. " z* H' P* h+ f) _) S3 \7 l3 T- B
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    ! R3 B% Y/ Q1 T$ {
  145. ; g; b6 [. j  Z) A
  146.                 yzm = re.sub(r'x',r'*',yzm)/ D; Y& O) x: c# C' z* n0 v$ D

  147. : u) ]7 G5 V' v# e
  148.                 yzm = re.sub(r'X',r'*',yzm)
    - ^+ T, l% V2 |: ?  S4 ]

  149. ! H+ G* V$ q/ \9 f+ u( S
  150.                 yzm = eval(yzm)  ?6 x, t) V+ D* J) r5 n; v7 r

  151. % D6 i2 `% g; p) @
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))" x; l* r. {$ I9 k6 @
  153. ! x: X2 H4 H9 h
  154.                 print '验证码: ' + str(yzm)
    2 P8 K5 r( `6 n4 n
  155. . u/ o8 j, K. o0 v) c
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    3 e% v. u9 ^+ D3 x0 P/ C4 Z

  157. 9 R+ Z9 _# T8 q5 i: y
  158.                 driver.find_element_by_name('submit').click()$ q3 S8 X% V$ t* W0 O4 K  E! }
  159. / z0 Z8 C% d; f) [; E" z8 m
  160.                 time.sleep(3)
    4 D( \7 P6 q: E7 \& T$ _" d5 B2 r

  161. 1 c! v, n* q7 F* E9 d+ S8 Q: s1 d. p
  162.                 return 1! e1 _4 T; Y7 c. g1 c+ K

  163. 7 f" \. I0 C9 H9 `: T8 _9 h6 q2 Z; B
  164.         except Exception as e:9 s: z& B3 \6 e9 P: l
  165. ( r  @: b2 {) Z# z, {: I
  166.                 return 0
    9 t" j+ w5 s$ [( J0 z
  167. : d7 T  T( |4 p
  168. def followbutton(driver):
    ( K6 b: q0 Q9 \5 g

  169. $ p7 [. o# j) f( c% L5 h" D+ M! Z' y
  170.         try:
    " f, ]7 G( u( X
  171. , y% }9 R& }) a, r  d  J6 N4 a
  172.                 driver.switch_to_window(driver.window_handles[0])" x& ^. i8 y4 l: |' Q6 }- o' n

  173. ' ?' z" |- q# P1 d# N7 C! v3 _; \
  174.                 points = driver.find_element_by_id("currentpoints").text
    + g4 @) x9 o: ?- B! S$ B; h

  175. 6 N0 b: H' P% D. O2 z8 [. f0 l' H
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()! ]/ Y. S7 i- a) z5 K. j

  177. 9 q8 b, l9 z; ~2 G  i
  178.                 driver.switch_to_window(driver.window_handles[1])2 w/ I* }' A! F
  179. : E$ u+ O  N' V' i
  180.                 VideoSource = ''.join(driver.page_source.split())
    ! P  Q* m% O' Y8 g* m

  181. $ ?! j+ k1 ~: E- p$ W; v
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    + |8 o; l; ^) r: C2 v4 m

  183. 2 r2 _, H3 {) C% X9 `4 [2 J
  184.                         print VideoSource
    ' s6 H- j" b5 q% S, s. q, V

  185. ) T7 p/ N. R* Z* D* M: `% G3 h
  186.                         driver.switch_to_window(driver.window_handles[0])
    4 B$ z4 U0 h3 _) I) z. O; }

  187. 8 o* c: R% r9 T  F3 o" S9 R& o
  188.                         print "Refresh..."
    / ]- [# t2 U! w6 V3 d
  189. 7 v% C3 Y, H6 {, b
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")- b4 B+ a4 p9 ?5 E3 p: z
  191. . f, f6 O( d8 Q. Z3 {/ q$ N
  192.                         time.sleep(1)
    / `& d3 f  r9 C+ Y
  193. ; _3 B% V8 Q; i0 V6 x2 \
  194.                 return points, H( }& u! n) ~# [& l3 s

  195. - c2 |# C* d2 i9 ^0 [" @
  196.         except Exception as e:
    - y1 ~5 k$ y1 R1 ^% Y8 r+ w' ]  X
  197. * ]1 s7 j8 q# I) G' i0 w. K
  198.                 return 0
    0 y; I; o1 T& }5 z/ _

  199. 9 O% M: B. x6 ]
  200. for i in range(0,5000):  d7 R  b4 [0 b
  201. 2 z( `, D6 e5 L8 g& A
  202.         try:  [. p0 y3 s% H. W

  203. 6 R, X% p) ~$ O
  204.                 captcha = checkcaptcha(driver). F  H3 U6 B0 K% u2 ]* R
  205. # |5 C1 @% B' s" k0 @
  206.                 time.sleep(1)
    4 M; ?0 B# b3 c1 |% ]

  207. / V6 `& v& D7 D0 {; @
  208.                 checkRefresh(driver): `. i" V" v* p) _. i
  209. ! H* L8 [: y' ~
  210.                 points = followbutton(driver)
    # A. B# J0 g* @8 o" p
  211. . Q! A! l' i' z7 x4 W/ G, j
  212.                 time.sleep(65), ^7 g2 Y( }- V. e' K. f
  213. $ E# U; p* h' F! W6 Z  h( ^) s
  214.                 driver.switch_to_window(driver.window_handles[0])
    . J9 I# [; g$ ]- z8 D6 m
  215. # l; v' z/ g. x& {/ X
  216.                 tmpp = driver.find_element_by_id("currentpoints").text. X( D1 g. C, h
  217. + X: t  m, f) O, B" }9 U" }
  218.                 print "points: " + str(tmpp)5 d( t$ V6 q3 m  `* x! j* x' W; T

  219. " j, K" _9 O0 ~6 v( ~# l" \" {0 j% E* z
  220.                 if points == tmpp:
    ! F! @! {: N2 M

  221. : E4 ~( u3 I) u  |3 R
  222.                         print "Refresh..."3 U, {& D  G# |) M. ?7 b) H
  223. 3 @: D9 W6 k9 l" c
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    " b% F' G/ W. |% H% i

  225. % V8 _  t3 ]* E# F- P% s3 ]5 w! m
  226.                         time.sleep(5)
    ' Z. H4 M. G) v/ V# [6 l7 j

  227. 9 s5 g' D# c2 }+ K6 \8 @
  228.         except Exception as e:
      s5 H* R6 c( j* O9 U

  229. ' D! P# ?  {; `  Y6 v+ W
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")0 K, B2 m# Y4 O% H* u

  231. 9 S$ G) m4 C7 {* O9 F0 g; H
  232.                 print 'error: ' + str(e)4 S" Z( Y/ H$ I4 l' a" F

  233. / I3 U9 a0 Y9 z" `+ E% S5 D
  234. driver.quit()
      o' ?: E, d* G. t0 m  @; V2 |
复制代码

( o1 \! N: b  e9 E" U4 x* ^# k
2 `0 K: ^3 w6 ~9 e: o( O. P* C4 _% S2 R$ M& Y8 W) d
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 : y) C$ I+ W! d* [. {% H1 W
5 C( Z  h) d4 E& L5 y7 D

评分

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

主题

1026

广告币

1522

积分

高级会员

Rank: 4

积分
1522

社区QQ达人

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

使用道具 举报

176

主题

1191

广告币

4252

积分

超级版主

Rank: 8Rank: 8

积分
4252

社区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:113 Z) E% x+ d  F! N, V' a1 U
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

% F! q9 d: T# z# z小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
) W6 e4 ^, U5 \: G# H& y
3 M/ e8 @* \: Z. ~  p( P
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-25 06:49 , Processed in 0.060454 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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