|
|
本帖最后由 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- * g( j8 s" j7 n% o0 }# F; i6 @
- # -*- coding: utf-8 -*-
7 X! ^. S7 | ]: e: Z/ N+ p& y+ p - ! @1 d) H7 ~* V r) g+ `8 h K
- from aip import AipOcr
, V" [" r' @' E5 S3 X4 Q) m/ V
) e* t1 K+ ^0 z" z$ t% ~7 ^0 m5 k- from selenium import webdriver
0 \. p, l4 v3 U3 q0 F$ Q7 \ - . s# L0 e! w8 [/ ~4 c
- import time. O1 }; j2 Q7 \/ z, q
- ' n' Z) e, R& x# ~2 r. H- ~8 s
- import random
8 c0 V8 z5 p; u- {2 z3 O
- z& u& b6 u" m( d* o! S6 @- import sys,re; `8 o) ^7 b5 ]: S: i3 R- n
- : p+ \4 ^. b1 Q) Q% l$ m7 n
- from PIL import Image, ImageDraw,ImageFont
- K9 ~# v3 Q: l2 y. F0 `" N
! J( k$ r. S/ L2 L6 {3 C, @5 R- """ 你的 APPID AK SK """
4 }8 x5 c7 A" m8 Q# Z6 b - : E# _4 m1 @6 w! K2 \% H
- APP_ID = 'xxx'0 B. z6 U7 r9 w h" F, ~ V7 G( S$ M
- : n( Y0 F$ A3 C+ o( w5 c# I; @. z5 U
- API_KEY = 'xxx'' k" t; _. m7 ]1 o- }5 x3 {; O
$ s% b. n% }2 s P" Y- SECRET_KEY = xxx'0 l+ c2 m$ A: j/ Y$ o2 U% M6 x4 g
2 }% ?: y, W( a- client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# j2 Z" w; R8 |+ [, {/ x: ] - ) M; R# _4 e- x+ d
- #PROXY = "127.0.0.1:8118"
" T. E% [* Z1 z" x- B, h% ]8 [4 B3 p
& W2 A0 d5 o4 X/ i0 [ G. ~- chrome_options = webdriver.ChromeOptions()
+ j6 u6 H7 P' r - y; L7 X& x5 Y" i3 w
- chrome_options.add_argument('--headless')
1 }% m/ g& I7 ^$ y) X - 9 X1 D; i( y& j
- chrome_options.add_argument('--disable-gpu')
/ O0 b1 X u7 X' D1 s - ! _6 ^0 p. h* B+ p. v
- #chrome_options.add_argument('--proxy-server=%s' % PROXY)7 b9 f& Z- t+ P. F
- ( U8 q: l+ c7 }
- chrome_options.add_argument("--incognito")7 I; W4 ~/ v+ |" p" {% w
- , E& P5 x: e; U; i6 a* k
- chrome_options.add_argument('--ignore-certificate-errors'); M2 h8 c4 S1 t% `( U& A
- & D4 r. C5 \" |1 l' F$ r! ]9 o
- # Win
+ m2 k+ E/ X: K F) @ - 6 ~1 _! J: W) J- o6 k) w |
- # chrome_options.add_argument("--log-level=3") _( G! e6 Y: g5 t3 `5 \* O A8 g
9 I# P( M" f8 F/ H8 E; E- # chrome_options.add_argument("--disable-logging")4 d5 Z& t0 B) R
- . Q+ t5 U+ @7 [. Q; P7 ?3 l
- # chrome_options.add_argument("--disable-logging")3 H+ l6 g( j0 t6 q. e
3 `8 [: [: X: B6 i6 f- #chrome_options.add_argument('--no-sandbox')
; f1 f9 B5 x9 e; i6 H - , @- S. z- a2 p
- """ 读取图片 """
0 R: |# Q( J$ L" U - " G% f! ?/ o7 {( O- b/ m. s- s
- def get_file_content(filePath):; Y. h1 ]2 G x
- 6 e# P b' {; k' ]& D
- with open(filePath, 'rb') as fp:# u) K1 X1 W S! [2 ~ ?
- & l" M: w \. |# C9 A$ \5 F* b
- return fp.read()
% M3 F$ m9 F$ x- I6 L# o" G& ?
6 E4 A7 V: ~$ d7 @- driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
' `. U9 l7 V% i1 ~8 a# j: f5 R9 n9 d
( F. p# ~2 f6 }$ l- driver.set_window_size(1280, 727)
; [( n8 a! Y, a8 ^6 N - 4 r8 M5 ]* j- f, T
- driver.get("https://youlikehits.com/")
, `8 P# k3 O4 u; {5 z
% a; e! C A/ {5 K) z6 G- time.sleep(5)
- }3 Y- V. b) _/ i6 U3 k, k3 b
. i n) g _5 \, W- driver.find_element_by_id("username").send_keys('11111') #user
; N1 g& e6 j7 ~, } H - & L m; x3 }% M
- driver.find_element_by_id("password").send_keys('111111') #password
% c8 {6 w a2 ] - - r, I% t/ M1 D, r
- driver.find_element_by_xpath("//input[@value='Login']").click()9 K" F; [6 q0 \
- ( t" \9 {$ T5 R4 T+ p6 I
- driver.get("https://youlikehits.com/youtubenew2.php")
4 ^6 T) K) ]' t& T6 s. g
~4 J/ @: @' b+ m8 M' o- time.sleep(1)9 }5 \9 v' U8 X' _& `' I
- 1 ~, Y' B! U; r8 c8 u: C8 f( {) n
- #Try Again1 d# v. X+ V4 u" { z
: F ]3 i6 e: w2 {! H( d- def checkRefresh(driver):
: a' c) ^0 B. f) z4 r! c$ M9 ~2 X* e - ' @* ~, `( ` y2 n' H1 p, D
- try:: @) s$ Q$ V) |6 v8 C5 z% C0 i6 W
- ) d& e; h! P. c2 V- S6 F
- Refresh = driver.find_element_by_id('loadmore')
) J" z$ j5 m7 F) Y$ T% E
8 g7 J7 j9 O6 X" \4 y1 G# s- Refresh.click()6 @. d: c, A$ X3 I3 p5 q
+ a* z: K; H4 V: F; j! l- driver.set_window_size(1280, 727)
. T: O# g' [$ _0 P
6 Q% r& j" X/ u% i& z- except Exception as e:
1 [4 K& W% z0 w `1 m4 g
0 p. H9 ^% |' \6 T% L% K. z- pass* F* X+ g2 X; W3 ]! \
- 5 |5 q# Y; w' S" L
- def checkcaptcha(driver):0 w! G$ a/ v/ n1 S4 S
- 0 t& ^& U, v0 \ f" R
- try:* r) c- i) W3 G+ [6 U: E. R$ @/ U
- - |8 v$ C: w) K
- captcha = driver.find_element_by_id('captcha')
3 e. d9 M, x# L
% _! }: U( [5 o) Z- print driver.get_window_size()
Q" ]; v# T, K( o) q$ H) S
2 P6 W) ^, D! Q5 k- time.sleep(2)
& D' [& B: M8 ~! J
) c( ?! d6 u- Z! V- driver.save_screenshot('/tmp/screenshot.png')
6 |: T- R& `7 Q+ z; x' {' P4 T - # I! {; K* |7 g, G8 S+ c: B
- im = Image.open('/tmp/screenshot.png')
- G6 o& {# N% M! j6 C2 W2 I! H
6 n6 b, _( y2 j- P- R- #取消headless模式+ Y3 R# c" j9 ^6 H3 d' ]/ |
# S- y, I+ ^7 e1 g" h& w5 Q j4 D- #a = im.resize((1269, 610),Image.ANTIALIAS)- n6 K" w' S1 f- H, E2 Z
+ a, u* }7 f& o# H; [$ z# n- . [- a2 _! k/ f. p- H
- , b: o, x E) ^- g5 {1 u- p6 d
- #开启headless模式
) l9 V" B4 j' q% ~+ t
5 e/ a: g R: y6 F+ ^- a = im.resize((1269, 727),Image.ANTIALIAS)
- Z' L, T2 X& w# L1 U - : x! ^4 s0 L# p, u( _) P' m
- element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")0 V1 j. g, Z& ?/ s& {2 l! f
3 z& w6 F8 d8 w- left = element.location['x']) D( H# F' v( f) z. G3 c( d
* a) H; h0 G: [* d: ?* s# ^- top = element.location['y']
7 `/ [9 t* u- y0 Z: c - 0 l8 X- ~3 [' F. R4 ]- l) t
- right = element.location['x'] + element.size['width']
, d4 p: ?1 m' y9 u/ Q2 H
9 w: o; V1 b, k2 j6 L7 C* h- bottom = element.location['y'] + element.size['height']6 k4 K+ q; G9 ~0 r. \, t
, e$ b: g0 L/ g1 A- $ |: g5 b G& ^0 `5 R
- 2 @1 J6 B; I* ? b' n9 D
- #element = driver.find_element_by_xpath("//div['#captcha']//img")8 J1 q" D% ?$ m; d- H9 L4 V
/ ?! n3 }: @" ^, C* x6 e- #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
$ j, M3 a: ?0 u, |" e% ?! W& Z
9 r- z# a- q" v5 O7 R- element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
, J/ ` A9 ]9 Z& F# F2 N - 8 u4 m5 [! [( c8 a' y& v# X
- a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
. j) Y/ A: E1 V, m2 G8 A
/ ^) A: O8 z2 r4 y- image = get_file_content('/tmp/screenshot1.png')
2 S) t# c: w: ^ - 9 q- {$ y7 L' U3 L
- a = client.basicGeneral(image)
) N! z- b& B! M; k. m
7 v6 B- L. I! A2 v- print a
3 ?9 k# f/ H/ h7 v2 }: H) S& Y
" X# E/ V" b; X7 X- yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])7 p/ O* P. w9 j+ E
# A0 b2 Y! Q. y. T- yzm = re.sub(r'\xf7',r'/',yzm)
. W6 m. O {- L9 @6 ]
* i2 G3 D$ Q# W* v k: e8 c- yzm = re.sub(r'x',r'*',yzm)
# H, m, i' Y- d8 h. Y
! q S1 v% M1 m0 n7 c- yzm = re.sub(r'X',r'*',yzm)( c8 J. ~+ ?. S5 Y. }
( ]+ q- k! s+ h7 y$ M& L8 Y- yzm = eval(yzm)" y. O4 U8 T" V& F* V
- 8 [0 J% B! W$ N1 q6 l- |8 J: e
- #yzm = eval(yzm.replace('x','*').replace('÷','/'))
2 l0 r, Q7 m, y+ _ - F/ H/ C( Y4 B* t
- print '验证码: ' + str(yzm)
% T1 x$ K- m8 F, ]2 W( |1 @ - 7 v7 q7 Y3 |/ n. W% r6 Y
- driver.find_element_by_name('answer').send_keys(yzm)
) L+ I4 P9 Y5 @3 {: S+ F. s5 Y7 p
$ o2 F8 K/ j, ?: j0 u0 B- driver.find_element_by_name('submit').click()" `9 H/ V! b% U, C* L2 `
; g- Y8 X$ L$ [- time.sleep(3)1 A- t! d( J+ ]6 w9 T
- 7 ~' e$ a+ w$ O. m5 E
- return 1
: H8 W$ v1 W2 ~+ S% M
+ _6 I: Q2 Q8 l: x! o- except Exception as e:7 g8 K( n! L: t+ y
" v6 Q% p5 [1 \- return 0, k0 c& T/ q' X! |* _7 d$ F
/ D/ H. u% q0 B3 _, W- def followbutton(driver):3 ~8 [8 e" |3 R" N4 C; g
- . `+ `- [) y S/ |3 u) A
- try:$ e9 ]8 f c" c2 @0 a5 f
# a, P* z0 Y9 q$ u% q; ^9 @1 b) H" s- driver.switch_to_window(driver.window_handles[0])' {# n$ g& g9 @8 P9 j8 d, \
- * I9 {/ k/ O4 G6 ^% A* E
- points = driver.find_element_by_id("currentpoints").text
4 Q7 N1 m" _& i1 d" a% s. I, ~ - ) u1 A) M0 b, R& |. `
- driver.execute_script('return document.querySelector("a[class=followbutton]")').click()- E: ] r; D6 G$ {8 @1 L9 C% |
2 E% B5 k7 M" s9 O, p- driver.switch_to_window(driver.window_handles[1])
) p/ e, G( L p3 T7 U
: x1 f# V3 |' @- VideoSource = ''.join(driver.page_source.split())
5 w" Q) X0 x3 n7 e- V: j2 v, P9 y
, y; c$ r9 q9 t' b1 A- if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:0 ~: `; @8 G4 Z4 N2 S& |
! b! W$ k+ C; s6 E3 A, d- print VideoSource( ~1 L5 T, f( B w" |
- 7 x3 A) E& A" l1 Y
- driver.switch_to_window(driver.window_handles[0])& K; j' u8 |' d9 a
- 3 K1 I# y' i8 P4 K7 N$ l
- print "Refresh..."
5 s' W3 e, k2 L6 S! v - * z/ V5 `/ r, |
- driver.get("https://youlikehits.com/youtubenew2.php")
2 t# c& k- Q' ? - 5 F! i1 k. Y4 S1 O9 Z) o
- time.sleep(1). Z! w; T' v/ D+ |3 \
- : v: M9 {7 w( G) q
- return points9 |; d3 h. a/ _" t) }! p% N+ @% X) E; P
- 9 j: p$ {5 {% D4 ]6 ?# W' N1 n
- except Exception as e:
( A7 s6 u5 d! C$ B* @7 S/ u - ) p+ B" ~8 N' J" k6 m
- return 0( \0 h5 X8 k6 \1 M/ d1 z8 C7 r
- : n+ c: n2 [/ p+ \( ~) q
- for i in range(0,5000):
/ ?8 V5 ?7 x6 @, J
2 r( v! r `+ W* t0 |8 G4 h- try:3 Z4 ?( V; v0 Y5 p8 A* Z
- " |+ X8 M9 d& O0 a/ I2 V$ u/ g/ s* F
- captcha = checkcaptcha(driver). R; N" W$ Y+ X
- ' f5 i o/ C# f5 j' N
- time.sleep(1)( V7 v! f i; Q& U* `. A* X" b
+ z9 E+ ?7 M; t& g) r6 ` K, b7 F- checkRefresh(driver). N) u) c+ U; @$ n! j. n+ v
- & Q! i8 H* b$ Y; U
- points = followbutton(driver)
3 P, {) E- z; {; d# j3 s+ ` - - y M5 C- e1 f# z& R+ \0 u, x
- time.sleep(65)
$ Q: @0 b% u6 B3 B. |! @' u3 L - * v! M/ S) y: ^8 y/ I
- driver.switch_to_window(driver.window_handles[0])9 }& r, r5 o" o$ w5 q! _! y2 T8 x2 C
. I! Q" {: p) r% B5 b5 i- tmpp = driver.find_element_by_id("currentpoints").text
, G5 t k0 j% ? - R- l" ~: i; v# F/ w3 A
- print "points: " + str(tmpp)
: d9 x- ^. W. R1 ?
+ z2 A) ~3 Y b- if points == tmpp:
0 R3 k4 T: E/ t+ i( R5 ^4 X
- T D( n0 Q, v ?2 ?) D! ~# {% _- print "Refresh..."7 [. _ _% m+ m! f! N+ k9 P
- ( |$ e8 Y( J' _& G; T; E
- driver.get("https://youlikehits.com/youtubenew2.php")
8 `9 M" C1 T& \" n: F6 W, M
! L3 V8 f! y2 X, E) q! Q* k, W: y- time.sleep(5)
m3 h* O% n: u9 f0 ]. Y8 ], k - 2 Z* r; X& i2 |+ f5 F: v) p
- except Exception as e:
# H' o3 V0 m+ D8 m `. |
7 d1 ^1 G- ~+ j6 ?. A( p1 K2 F- driver.get("https://youlikehits.com/youtubenew2.php")
& I" T, K- K; @$ M& E
7 @' _3 P4 G( I6 f% o% o6 Y- print 'error: ' + str(e)
6 H: y, _& y) K* D* t
5 m: _3 h* D V0 h0 B1 V- 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 |
评分
-
查看全部评分
|