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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 10205|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
4 J) S" J9 a# C* X
5 D# w# d6 o- q, }% n: j9 t3 s: m0 X3 u
  1. ) L( b" [4 U, v4 Y& A, F
  2. # -*- coding: utf-8 -*-$ a. e' r0 v3 q' [! a/ S2 m/ J

  3. / K  k6 y1 {! B
  4. from aip import AipOcr4 ]9 A, a) L7 K# F6 i6 ?

  5. $ [* f; U  H3 a
  6. from selenium import webdriver
    - o( U! s  T4 l6 T6 @6 J9 r5 c, o
  7. : r. P8 o8 o. e
  8. import time
    & U5 ]% L$ F; \8 q' b

  9. : k' P- g" y2 k: P! G) x2 J! t
  10. import random. u, v7 f* y/ O- L, v
  11. 8 X% [# Q) T7 U
  12. import sys,re
    : g+ z' ]" i9 ?, S7 t

  13. % f& R: {  r' K! n, j8 V
  14. from PIL import Image, ImageDraw,ImageFont
    ! z0 d5 d! U. Y/ T

  15. - z: X$ ?- E, G4 t# W, x
  16. """ 你的 APPID AK SK """( O1 ?% s3 d& X! X2 b/ l

  17. ( b) n4 Z  w5 M9 p  }- |
  18. APP_ID = 'xxx'4 Q6 J* m6 _5 E9 H1 l4 z

  19. 9 c5 p( _8 H; u$ z) f( c3 H9 \
  20. API_KEY = 'xxx'# g* _# H- d% b
  21. 9 r  n( J& N1 _: o1 Z
  22. SECRET_KEY = xxx'8 _: s' K# p! v( p+ e* l! \
  23. # |7 C0 q4 B* C, u" S
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)2 x+ M; U9 H8 q, C( A/ {

  25. : G( W8 T7 B8 S! A; N. x+ [
  26. #PROXY = "127.0.0.1:8118"
    . C- i, S5 ?/ I

  27. " K5 i( T1 X7 R: v3 H: c0 s
  28. chrome_options = webdriver.ChromeOptions()! P/ o! {" z3 [; S  A. X3 i+ ~1 q

  29. - W, H. u7 d9 t
  30. chrome_options.add_argument('--headless'). P& I6 ?' i$ r- N* ^$ L

  31. - I0 h$ J" o1 ~
  32. chrome_options.add_argument('--disable-gpu')
    + }) _! L. M7 l$ P2 K! \; }" z

  33. + u, o( G: O6 n3 L/ n
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    ' I- s4 B" s9 M" j( |0 C+ \8 }
  35. : K- {  Y: ~' W7 r. k* E6 ?
  36. chrome_options.add_argument("--incognito")
    1 x$ V5 I3 K4 t2 T, f: f
  37. : q  x5 [0 D) g! Y# `1 f0 X
  38. chrome_options.add_argument('--ignore-certificate-errors')
    6 W! U& [* F' c& H, Q# V
  39. . q7 {+ ?/ R9 o4 [* |
  40. # Win
    # I3 C- ^; F) Q- K5 x2 I  g0 E

  41. 8 Z' H( C, v; \' k5 P2 q+ _
  42. # chrome_options.add_argument("--log-level=3")8 X' b) K( b! F+ i. i( e
  43. & {* E: M( h' g& @  v2 k- H" N
  44. # chrome_options.add_argument("--disable-logging")4 _0 ?& L" o- ^) C
  45. / A1 W5 F3 \4 {
  46. # chrome_options.add_argument("--disable-logging")1 ^; h9 _& o( l1 m6 B

  47. 1 @$ @( X- ]3 ?& W3 |
  48. #chrome_options.add_argument('--no-sandbox')
    ) \5 f- C* u  K# ~, Y3 f) V
  49. , G# B5 m6 X7 v4 W  g* \
  50. """ 读取图片 """* Q' ^# M8 S$ v  o7 x% d
  51. , w: \8 @7 L  h( b) C  g' u2 d
  52. def get_file_content(filePath):7 e: ]  ^8 O* O; h7 S) P2 j$ `
  53. ' ^5 K$ O( P3 @; F$ R+ L
  54. with open(filePath, 'rb') as fp:; K- X1 F! X+ T- E
  55. , G/ [. L3 X" `9 ^6 R1 B
  56. return fp.read()$ k$ Y6 S, F9 Z: a  C
  57. % w$ I# b$ V9 m) ]) p1 U
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    1 @0 [' _* U" A! i
  59. * X1 e4 z9 k8 ]
  60. driver.set_window_size(1280, 727)
    * d1 k$ K' h* r( l; z3 F
  61. 0 {9 _& H2 \4 y' z9 M8 g/ z5 h
  62. driver.get("https://youlikehits.com/")
    / L6 B  d1 y0 V9 {. Z
  63. 4 X2 {3 f. W& B0 f; ?- o9 C, l. t
  64. time.sleep(5)4 G7 U$ X1 k+ Y5 k

  65. 0 s' Z$ p7 F0 N1 w/ K5 G  y: V
  66. driver.find_element_by_id("username").send_keys('11111') #user8 o  [% d1 @% J- ]

  67. # E# Y9 J  L3 m/ ]: `5 O. I
  68. driver.find_element_by_id("password").send_keys('111111') #password
    2 }% k# d0 l! o/ H" R- [
  69. # c' T, ~+ `$ n. G) M
  70. driver.find_element_by_xpath("//input[@value='Login']").click()0 J& E- J& [7 A
  71. 0 L: Z9 D# t& X+ Z
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    - E' R8 ]$ h2 l% U9 J8 K
  73. $ X' W' v" [) Q/ l( N
  74. time.sleep(1)
    8 W9 \* b) F; y. i4 `" W# w7 U* @

  75. 0 C9 \7 o" c2 l% x) j' m) U
  76. #Try Again
    6 A: D7 M  U" J
  77. $ o6 Y* i6 Q4 x% J4 v
  78. def checkRefresh(driver):* \- \1 T$ [/ p

  79. $ F, b0 L8 H6 |; Z+ h& T
  80.         try:+ e% D/ ~5 h1 R& I

  81. * F& p5 V3 F9 B& g# s
  82.                 Refresh = driver.find_element_by_id('loadmore')* q- d1 D4 K% z$ z
  83. " s! \, R$ I  k, z2 G9 U7 W
  84.                 Refresh.click()* q$ D: F% e4 J" Q

  85. + }3 D9 E8 R+ j3 C/ a2 m" U$ t
  86.                 driver.set_window_size(1280, 727)* L: f! G* H: D" ?* `' m

  87. + `8 W2 _( D( |; m0 ]
  88.         except Exception as e:/ u3 L0 c: U+ N/ {" {5 o

  89. 4 q; ]4 s# V8 _' B
  90.                 pass
    ( q- w1 h$ E1 @; ]

  91. 3 F! L- L8 t2 H& ]- ?! c: E2 r
  92. def checkcaptcha(driver):& d% q4 ]$ k2 t3 l

  93. ( X7 ~) b1 ]. v% \9 N% b3 `. P
  94.         try:/ R+ W  S5 L, f- M

  95. ! T5 {6 k7 }" Z8 V
  96.                 captcha = driver.find_element_by_id('captcha'), x1 H! \# G$ y: O$ |% T4 Q! g& S
  97. ' ~( Q/ {1 j; T4 X& |1 }7 p
  98.                 print driver.get_window_size()7 n& b  x3 K+ @+ K1 T

  99. $ @$ e2 l$ l9 x4 T7 a4 k
  100.                 time.sleep(2)
    " A$ _/ T0 I+ g/ f5 M+ E/ k
  101. 8 \4 n( L- D5 ~# z: z1 ]+ k: l
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    9 l- |9 h1 ~0 h+ E
  103. - i$ {2 D6 m# d) }8 U
  104.                 im = Image.open('/tmp/screenshot.png')
    4 C3 Y" T2 ^. ]
  105. . r+ U1 H: T8 g* X& ], @( C
  106.                 #取消headless模式, X6 W9 Y& y+ M

  107. 2 Q8 y  M1 N; a5 s
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    1 a$ ?* l9 v8 H6 K

  109.   F: o& Y( F$ k0 C, m1 e
  110.                
      I! s. j( f( U/ H) b3 A+ o, \
  111. * R+ M: Z% D! A! F2 i6 V+ A) @) y
  112.                 #开启headless模式
    . j9 c" ~+ l" m3 p8 U

  113. / W) r! N# j% D$ v
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS), c" Z$ R4 w7 l9 l- f( x$ c
  115. + G# b/ b' z2 N
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
      _+ }* t# S& g. _, _' o
  117. 3 U- W/ h  ?" z3 o4 o& ]
  118.                 left = element.location['x']  H, _$ M& t% L

  119. ' u, k0 M# @( D* G
  120.                 top = element.location['y']6 ~" {- T6 x) o) p7 ?
  121. 3 n8 B5 @, a  y; G- x9 Z
  122.                 right = element.location['x'] + element.size['width']
    + n, Q& s8 o! @' ?7 |6 _
  123. 5 S! G4 j: q5 [
  124.                 bottom = element.location['y'] + element.size['height']9 r+ d6 `3 v$ M2 L5 B

  125. 7 f: z8 E9 m( v& ]6 t9 ^: c
  126.                
    " U- n$ W" c8 u2 K" H# ?& B" M
  127. # e8 C% \) r2 u! d& _- s' i* Z6 {% f
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")  ]% R; m2 G6 i- q0 \

  129. # L2 V% k, }/ Y. q( U& Z. H
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")# O9 R2 r+ a$ z# X4 K& c
  131. * a2 `: u0 _) }+ Z3 X
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    ; R8 f! x. M" R9 s9 f
  133. : x, T7 r% e$ x% J( v3 B# N
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    + a7 M3 Q% f3 {. j
  135. 6 f9 Z' G1 j. o& A, t, b) s  G# G
  136.                 image = get_file_content('/tmp/screenshot1.png')
    $ B- F( ]" Q) Z' l/ t8 V* g6 L

  137. 6 a( y+ N8 ~2 d" u) N; q2 \; M( I6 T* k6 E
  138.                 a = client.basicGeneral(image)
    ; b; U+ c' n  S  r7 g/ X. r5 L
  139. : M3 Q2 n" b$ t$ {6 X- E
  140.                 print a1 J9 N1 e, N* h; u7 n$ [2 T

  141. + k$ J3 a. D0 {3 K( Y
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])" e7 z: S% _: Y. q6 G

  143. & |6 E; ?3 k6 {
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    3 \* f* x/ W: j4 R; c) ^
  145. ) d4 l/ i: C7 c3 _- ~
  146.                 yzm = re.sub(r'x',r'*',yzm)5 c* N* r* Y" v& H" T1 R
  147. ' E5 @& N" L& L% d9 l
  148.                 yzm = re.sub(r'X',r'*',yzm)# k8 u, T* g  e; p( C

  149. , p! d: I5 N: G9 X0 k
  150.                 yzm = eval(yzm)8 o, M% z0 a) Y1 \5 z/ Z$ v4 T
  151. 5 m( w" g" N: \! a) U5 l
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))# ]. T. ~) Q0 G1 l% \/ `
  153. 4 p3 [+ b' g: X; J  ^" L
  154.                 print '验证码: ' + str(yzm)4 ?1 q. F& ?4 ?0 C1 Y: m3 N6 }
  155. * W9 Q) |2 T3 ]& w7 I  f& _
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    6 M. C- f4 n8 A5 J; Y' k2 R( N
  157. 9 v" _6 |' d  _7 g
  158.                 driver.find_element_by_name('submit').click()" S5 n& @) I) R+ l: P& v4 I

  159. ( l1 G$ j( n' b6 P
  160.                 time.sleep(3)
    ( f0 K% E& o) p2 e% z) O: @
  161. $ v0 `% E& j% K3 J9 D% a
  162.                 return 14 \) h) x0 k9 t* s& m6 `) F- F0 E
  163. ( @2 n2 ?. {0 ?7 v. I: L
  164.         except Exception as e:
    / z+ {3 I, R* W" R* c; Y
  165. 2 M0 i7 k3 j: O6 N& q2 ~; o7 V
  166.                 return 0" a6 f/ v1 A+ U' A( c1 o5 P6 Q( ]  l

  167. 8 x7 G0 W7 P; d+ W. m9 I
  168. def followbutton(driver):, E$ [& _! W( }) k. H% z& u
  169. 0 {2 A$ z5 A/ P/ T
  170.         try:
    $ l( N- x2 d9 W- f5 r2 D

  171.   ^, H% o7 O/ n2 F2 e3 W
  172.                 driver.switch_to_window(driver.window_handles[0])
    6 P  k3 {% G2 A% e8 w+ @3 W+ ~

  173. $ I* _$ r( Z: ]) _& n6 l4 b
  174.                 points = driver.find_element_by_id("currentpoints").text1 u  A* g) }2 Z, @2 ^' u
  175. ' C  e3 n" D  ?6 x/ v+ t
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()) F( w* G4 y1 B% T6 i% v
  177. 0 X1 h8 E7 _5 y7 c4 {; |
  178.                 driver.switch_to_window(driver.window_handles[1])
    + r. k* m7 b/ r* Q) P/ ?" k7 z

  179. ' K: _: G+ S7 @  F' J
  180.                 VideoSource = ''.join(driver.page_source.split()); @2 g1 M' D) ?, Y% p8 }
  181. ; X' w3 J2 S- r
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:# M& r- P4 y4 E

  183. ' g; e/ R# l4 Z# ]( ]" U( p
  184.                         print VideoSource- P0 Q3 ], H; p) [& Q1 U! O

  185. " w8 F( ?1 }% N/ s% |" ~5 ~
  186.                         driver.switch_to_window(driver.window_handles[0])$ }; w5 `2 q; I

  187. 6 ]. i, Y1 T6 s0 T, Q8 ?1 Q
  188.                         print "Refresh..."4 Q6 L( H0 }* A  g+ \

  189. 5 U1 t1 L7 g: V4 e5 B
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    ; _7 D: r' g; U2 a  |2 i' A& S
  191. & j& M5 ?" }3 _/ X
  192.                         time.sleep(1)
    . S3 r+ Y. p8 F

  193. 2 z/ j: |, R9 y' R/ i4 F& Z
  194.                 return points
    3 G, M" {2 Q: Z

  195. 3 p$ u7 a2 {  g! @4 _
  196.         except Exception as e:
    * `3 S& `* C+ b) a( t

  197. # k" `$ u) S4 Z# V  t+ Y' {
  198.                 return 03 Z# J  }8 n) G' p; i  c) S+ n

  199. " J5 }/ Z  z' Q
  200. for i in range(0,5000):
    7 K6 ~) T( ], C: G  \5 [- k/ t

  201. * S5 n$ ?9 ]$ Y" z: P3 I
  202.         try:! |- A8 X* x% c1 l7 M
  203. ) G; L8 S7 n3 m5 g2 i0 W
  204.                 captcha = checkcaptcha(driver)! u7 e4 r. v2 H- {. R- l
  205. * J) a7 H- ]% S2 I' h- ^8 h
  206.                 time.sleep(1); h0 q2 Y9 U+ g

  207. 0 F) t  p  r2 @3 |# l2 A; E$ Y/ B2 ]
  208.                 checkRefresh(driver)
    % q2 d  r: \* W" e- w; [
  209. 5 Q4 X3 k; k, |9 _3 ^
  210.                 points = followbutton(driver)/ d9 T. p6 |/ Y/ s

  211. 9 {1 O1 e# c' ^
  212.                 time.sleep(65)' h, W/ q, u# j+ Z9 P& s9 [. l

  213. 5 K) z8 e% k# B( I, a) x
  214.                 driver.switch_to_window(driver.window_handles[0])- i  d) A& Z2 ^/ N
  215. & c# [" b8 T/ x* |! A3 w
  216.                 tmpp = driver.find_element_by_id("currentpoints").text' f9 R/ `1 j1 p+ l, g" ^0 }( K
  217. 0 h5 P/ b( X! V7 F( V' L& }0 B
  218.                 print "points: " + str(tmpp)
    ! @& Y. e* C  ], p' y
  219. * i1 Z5 E. k" a$ u  k9 Z# F, x
  220.                 if points == tmpp:
    " z, ]2 i) F9 G7 f' G* @2 W+ e+ i

  221. 7 Y. N" k: j% H* s
  222.                         print "Refresh..."# I+ t2 k) r* [) W3 ^

  223. 9 t3 T, Y3 k) Y/ X
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    ; X/ |# A+ _" W' ~& N; K

  225. 6 w( f0 i5 U, F! b& e7 p5 e  _
  226.                         time.sleep(5)
    5 Q5 `4 s1 [  a0 v- H$ w
  227. 3 f# K( U  M  H4 N- e
  228.         except Exception as e:; G" S% W* ]3 N+ s
  229. 9 h6 o5 i5 a! W, k* n" M' n
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")6 \) Z. j. N. [/ z/ e5 T& o' P
  231. ' n8 p+ x1 _- _$ M2 E& N- p
  232.                 print 'error: ' + str(e)* A& E# G  `6 [9 X- {' c% Y
  233. ( Y( j4 o. q9 J
  234. driver.quit()) I3 r" |7 m* r( c1 j& |5 r
复制代码

( G. R2 N1 Y, b1 N3 h
! l/ \% n- h; C& J! R; j$ ]6 D+ g, k9 j, s
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
- E; d4 \) ~, r% r/ t' I7 z
- X" U8 e8 U% H* q8 |; u

评分

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

主题

1007

广告币

1504

积分

高级会员

Rank: 4

积分
1504

社区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
6 |9 E% j# U- n! ^6 Q用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

$ n5 F9 V9 e& _8 t小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈  ~( {1 }4 A) X0 r* L% L
: O5 b2 E# n) d! a0 d
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 10:03 , Processed in 0.050990 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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