|
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
6 P7 c" q# Z1 G+ W4 D1 e7 ^6 x; }: a5 H9 [/ X7 E5 Q
3 o; g4 o1 R$ Y6 q/ h
- 5 g+ I' l; g W& t( d" P& F; y4 g
- # -*- coding: utf-8 -*-
9 H- Q$ g2 |+ ^# }+ a+ d - 5 P- W: J [" v* m( A. ^" M
- from aip import AipOcr U/ [' H( o, c" h$ i3 q+ f) ~4 Y
- 8 e* [, U0 y" C4 @0 K, ~& s7 d
- from selenium import webdriver2 @ P7 Z+ Y" g, h! N/ E
- 5 V$ J" H- _) [" k1 d1 Y
- import time
" W% |7 k* B# n1 h - . |0 C6 W( N1 i6 Z5 y- F: _
- import random
5 k+ l M0 y ^- C - + r' }: v0 ?( [5 J( b5 f
- import sys,re
. L9 d: V7 E$ N7 c' i - " N( {" j3 h6 l- q2 ~1 |
- from PIL import Image, ImageDraw,ImageFont( G2 n: Z D) G2 y
- 3 ]% ^& f A% Z, g
- """ 你的 APPID AK SK """
5 k6 K) |9 x6 p G% I) c
6 d5 r. b+ y- Y- APP_ID = 'xxx'
, m" s ?$ k( { - 6 M% i" \" F4 d
- API_KEY = 'xxx'/ l: L K" e4 `, ^" Z) d3 D
- 6 C: c! ?/ F' ~+ o9 m
- SECRET_KEY = xxx'
d6 n; R+ C5 { - & p( B6 t) t/ \' A* d9 z, Z
- client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
2 T' e& ~! e# O- I
- ?- ^' g% j3 S) ^- Z0 V& A- #PROXY = "127.0.0.1:8118"; p1 I) }: Q2 i% L$ X$ [' _' V
9 N3 @3 s* W# p; q- chrome_options = webdriver.ChromeOptions()* H; B I% }# I& x3 H& D: |) {
- ' h8 h" F) I4 k: r v( M$ y
- chrome_options.add_argument('--headless')) {8 n( N5 C6 o7 v: e4 V$ a
- 3 a3 L9 {1 n- P
- chrome_options.add_argument('--disable-gpu')
0 B( I Q1 H. e: A
1 H, R7 _$ v5 ^4 Q$ {* c- #chrome_options.add_argument('--proxy-server=%s' % PROXY)0 l! U7 a# ]6 M5 F+ q' v' ~
- 7 i* Y9 _8 I$ }1 H
- chrome_options.add_argument("--incognito")
3 v1 e. h& n! ]) ]( r
9 |; B2 F1 u) y" J8 Q: h- chrome_options.add_argument('--ignore-certificate-errors')# U0 \& A: q3 S7 e# q h5 Y
- ; m* R( B- _; X; H
- # Win! U( \8 @+ `& |+ z9 |
: ^/ l5 ` }4 y2 Y% P- # chrome_options.add_argument("--log-level=3")
; H5 T" z" [4 ]3 p
) e: `9 b. t4 m# \- # chrome_options.add_argument("--disable-logging")
`* `2 f x* Y! ]6 I+ O - 1 e. a" u+ V) h7 g$ n7 O4 m
- # chrome_options.add_argument("--disable-logging")
, ?! H* h) S. r$ z! v6 ?4 E" h
. p1 t6 r3 l. I' ?: f* c8 {% i2 E$ |- #chrome_options.add_argument('--no-sandbox')
- |" ^5 g3 D. H2 \$ K3 H% b
/ B- e) _8 k4 T+ t+ V- """ 读取图片 """8 r+ G* I% O5 _$ B9 f
. \5 }5 E! c: ~8 K, P2 `' ]- k- def get_file_content(filePath):5 ?0 A5 z% u/ Y L' P8 M
* \- l9 A2 z2 U* I0 c1 |- with open(filePath, 'rb') as fp:
" u4 t$ c, l( X& Q0 F) _ - 0 m! p" c+ Z" W; |: `
- return fp.read()
3 |" {$ B0 o0 {8 \/ @ - 0 U/ K0 H. i: R- E0 v
- driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
, O+ d5 x2 P& x: L# w- q - ' x2 d4 P* c. X! G6 Z$ U% O
- driver.set_window_size(1280, 727)
3 K- L7 P) M& t9 w6 ? - ' A" \" y" P8 N4 b7 u5 S4 i
- driver.get("https://youlikehits.com/")
0 ^$ @6 |8 q) i% ~' H - / \7 l& m- I, i, ?5 ~: ]
- time.sleep(5)7 R: c- c/ C' U6 p
- - ?' E& r" @6 q( t5 v
- driver.find_element_by_id("username").send_keys('11111') #user
* P& B4 X3 A( c" O- o# Q( a - . N9 u w7 v9 I' t3 d9 P" d
- driver.find_element_by_id("password").send_keys('111111') #password& ^8 e/ V) p; \% o( z- j" }
8 ?0 T4 |3 W6 x- J+ i' c, `- driver.find_element_by_xpath("//input[@value='Login']").click()9 p; h8 l+ S, T
. j, @6 _! C, ~7 J- driver.get("https://youlikehits.com/youtubenew2.php")+ r4 N7 E/ }8 U" U* t9 L$ D
- ! Y9 H* e8 ~' B" Q
- time.sleep(1)
/ C& J( M' D7 `2 K. X ~, D - # w5 @# o. p& Q$ L- n9 i0 i) ~" n
- #Try Again
8 p$ H3 r) t0 G. A5 T( f8 s - 8 _- E/ B9 ^* j% y1 Q& F( U+ W
- def checkRefresh(driver):
+ G% l# f) i! e$ v U* D( ^
0 |, V- b; s" F! P& b4 Y/ h5 P- try:
# p H* Y6 J" z) C4 h
4 @- y8 i4 ?4 S- Refresh = driver.find_element_by_id('loadmore')
/ w* C& y N& V* @9 x
$ l# T$ E! [; y: L5 s7 U" o, f+ f- Refresh.click()& S$ {1 n z- W; b# W: J. i% ~
+ E2 q& k5 u) K; ]' k0 X, B1 T0 _7 c- driver.set_window_size(1280, 727)8 w9 H' `) Y: T( {( q# W
* \& h4 N a( o& ~- except Exception as e:
( R& G3 C) V5 `" t - 3 p/ d B5 F w
- pass
4 L g2 a3 w( R0 s K! \6 ?
7 b$ J0 W0 ?) c6 f- def checkcaptcha(driver):& C+ |3 ?9 ^/ A( g
- , T, L% v* f: P: X; I5 n; b% V
- try:
( w' \ P/ r6 T0 l6 [
( X i9 X" g+ L `- captcha = driver.find_element_by_id('captcha')
9 I# K3 d/ P( H4 t0 T- H! I
- ?2 C4 B; f- z) M- print driver.get_window_size()
. K1 _4 ]! i6 a" Q- ?
* j$ J: M" {% L" i- time.sleep(2)
7 V# v1 D# A; Q/ w - - F+ Y q; [9 \) z7 x+ m
- driver.save_screenshot('/tmp/screenshot.png')! i3 F; T; f( o9 s6 R# A) J: z
2 `! f' Z9 y6 Y2 o, [- im = Image.open('/tmp/screenshot.png')1 O9 F: U5 t( ?1 C/ ]
- # M) a @+ R9 l" [* |
- #取消headless模式 U/ \/ s3 X8 W) ^* S1 g
- 2 [) ?; O( d2 n+ v0 E" Z/ V, v
- #a = im.resize((1269, 610),Image.ANTIALIAS)" X6 s; r: L1 K* ]$ V X! H
- 3 z% G7 s0 R- N2 i/ B8 ?
-
) _/ _+ N; u" L5 E% S; a* j. O3 n - 9 S2 o$ R% K ?, I
- #开启headless模式8 [0 f" C( q! {3 L; }
- , v! s2 ?1 y' T/ v! e$ x8 m8 O
- a = im.resize((1269, 727),Image.ANTIALIAS)2 O) s# z& [" r
- * b m$ h1 H0 g! }/ C
- element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
3 ?& E& Y6 T5 j# N" p - * g9 y1 v0 H4 P2 Y
- left = element.location['x']( E. o6 q; I6 R5 `, ^# @7 n
- 6 h4 u i- l6 A/ t. I, g5 |# O
- top = element.location['y']
( a7 u( y, E# D( K - $ ?) r8 ]: h Q
- right = element.location['x'] + element.size['width']
+ a+ J6 E8 h$ s7 ?0 \$ L
6 ^( A6 x- D" U4 \2 [$ ?3 L- bottom = element.location['y'] + element.size['height']
+ J8 e- _. w' B - ' R0 y9 N1 g$ a" c P
-
+ e& }4 v: Y* N% i - 1 V5 e$ c) z$ |' N7 r) o
- #element = driver.find_element_by_xpath("//div['#captcha']//img")
( e4 A+ p$ w$ Y
8 J7 `9 c. d# X+ ^- #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")' c' {2 g3 c2 p) G2 \- |' G) {
- + l* s( u; X9 F* Q5 j9 m: H% X8 `
- element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
" L4 N) l1 v& }( p' K: K
. n) M5 F/ | X/ Y8 b3 u- a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
" b! l, ]' X6 f
, z: _' F. L. c& m$ Q/ O6 R! [- X2 l" z- image = get_file_content('/tmp/screenshot1.png')
7 o2 V' i% G, q
! p n S: T3 O" Y, f6 _- a = client.basicGeneral(image)( A4 P# b8 {; f0 T
. M- A0 r4 L8 p/ C7 t- print a
& n- n& \* ^" u' L; v+ @7 B - 1 i+ T# s5 @8 @- u
- yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
) X& B1 s% b- ~5 N' V- t
' T0 @0 o2 ~7 a- yzm = re.sub(r'\xf7',r'/',yzm)- g" B7 w6 `1 o8 n! t
: @7 p( g9 Y# Y. E2 p G# }- yzm = re.sub(r'x',r'*',yzm)1 q+ B) ]; b+ b# Q2 f2 q6 Z+ \! h# f
/ M' F+ r r# u( A3 O/ z) k: [- yzm = re.sub(r'X',r'*',yzm)
# s9 C' }" g( g7 k0 n$ X M1 E2 U - 3 j; e1 ]/ S' h. S
- yzm = eval(yzm)
. }2 O d6 C: C: n N
% R% Z! w: x: P* y. H6 M3 b( b- #yzm = eval(yzm.replace('x','*').replace('÷','/'))4 Y+ i2 l, q; n, s( X
- ; w+ D& ]0 w9 e5 ~8 E; e2 w
- print '验证码: ' + str(yzm)0 ~6 H3 \' @* B6 `) d
- 1 K/ p) e. u9 \' C) N" `8 |
- driver.find_element_by_name('answer').send_keys(yzm)
" {; O* M0 E6 _3 L/ G5 i3 Y! o7 S
5 J. @( M7 F/ }5 d2 K- driver.find_element_by_name('submit').click()
" _' l9 r4 |4 G' _8 v+ [* ^+ M
. |/ v$ G% z4 M2 f' D! a7 U- time.sleep(3)
( j; b; P* z% n+ Q4 q8 C
; ~" s- [8 N, v M- P- C- return 1
% h# w/ v7 d3 N- t! a" ]3 v0 s. V, ~ - 0 l# r7 `7 O$ F
- except Exception as e:0 D! {1 C7 N7 J" V3 Q. C
: Q) G8 C1 J; S' I0 s& T d+ X" n1 ^0 g- return 0$ r- P2 H; H9 O2 f$ s2 N( _
$ P: ~; ~7 S' \1 Q6 G7 |9 D r- def followbutton(driver):/ B+ D" w* Q3 X- l) q |
5 R; c8 e2 n, s( |# S- try:
' ?) n5 n9 d: k! U$ | E+ H
. z7 t) K W: X0 C0 X- driver.switch_to_window(driver.window_handles[0])4 O( p% V u/ Q. \+ b6 U# ?3 N
- 2 x- I: V+ D, j7 x1 X6 Z2 b4 c
- points = driver.find_element_by_id("currentpoints").text
. P# C) `% j% s8 J+ n' [ - 0 Q6 y$ v1 d* h' R0 w+ A2 u% p
- driver.execute_script('return document.querySelector("a[class=followbutton]")').click()7 ^! N& }$ r6 y4 p% |& A5 r% L
- 1 p9 U; [; k- R4 K: w5 N. N
- driver.switch_to_window(driver.window_handles[1])
; X7 W1 Q b6 s) X' M - ' w# b2 E0 {5 _! i4 k2 ?8 x7 |+ H# n% Z
- VideoSource = ''.join(driver.page_source.split())# S) ^7 Z- t) j' P& u; ]9 O
* B, Z( s! ?$ l" L0 |7 r/ Q- if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
& g0 \8 o" }; B0 o* \: V' C8 I - & ~* s7 D* b( X* u# D6 H! P
- print VideoSource
4 W; b' O# k: E$ o3 s8 l- L - , p- ^. O3 ?6 j) ^: ?: i& G
- driver.switch_to_window(driver.window_handles[0]), I7 y4 [* S2 e8 Y3 U* z& l
- $ o* D* D1 _- b; q
- print "Refresh..."& g) g0 C9 S `2 Z
- % Y9 Z: w$ ~& _- m) @3 b r( D
- driver.get("https://youlikehits.com/youtubenew2.php")9 u$ I" C3 B( u1 @6 T
- ; }: }! i. x, n' I5 X# p
- time.sleep(1)
0 j2 W; C! \& g* t6 y - " \6 L/ v' [5 a
- return points) ]! X5 }% m) @! G9 @
- $ s* T9 x( T9 U( b: |
- except Exception as e:8 s$ ~4 I3 Q' b4 X) [2 x% G
2 S! }' F( v- g( ?( a- return 0
4 O! `2 _# d5 V( q - 8 G3 A8 |* p/ G" X& z% J- ]) q
- for i in range(0,5000):
2 N, f: @0 Q; Z, S2 f - : _8 W" `+ V) R& X: c+ m" }
- try:
1 {, c& D9 l! I" ~4 k& F( A6 r
, c* U. j* e0 F! F- r6 x- captcha = checkcaptcha(driver)* e+ q2 W# Z4 e( o% `
; S, L6 r/ s3 |- time.sleep(1)
6 ]; z+ r2 {1 t - & ]" @" t, w; }, e1 `& r1 n; ^
- checkRefresh(driver)/ `' Z3 { i0 {/ A0 x- ^ O
- * }1 M' |- w" V, ?
- points = followbutton(driver)1 B3 q1 S) n7 \( \" d
. y& W% R Y4 I4 a- time.sleep(65)
7 w2 q# F& N6 T. q* Z
9 J$ Q8 {; M! N1 o3 l- driver.switch_to_window(driver.window_handles[0])
+ }8 p- i0 U3 C: e - + v7 ^ ]$ ]: `1 h( I$ ?! C
- tmpp = driver.find_element_by_id("currentpoints").text
" c; D! [5 T4 N - " @ f4 X0 i0 Z$ k! N( _% E5 a7 Y
- print "points: " + str(tmpp)
) ~6 [" n3 @2 \8 {- |, s
" q- W8 U) i1 x# |" O- if points == tmpp:
$ \! v; f8 l& y1 k& F( D) a - ) }; L1 R6 a* G3 Q
- print "Refresh..."0 y8 }' L0 s$ H0 u2 o
- + _. m P' n! _9 @
- driver.get("https://youlikehits.com/youtubenew2.php")
9 m# c" P" ~) W
6 s5 r7 y6 [) v- time.sleep(5)8 e/ S1 r8 M F, C' R+ U* e
- , k4 f$ w* q) x7 O* k: ^% o' T9 b, z
- except Exception as e:8 U9 ~; w9 \# u" e0 X6 u# H
2 j+ t# j \- c# `- driver.get("https://youlikehits.com/youtubenew2.php")# p0 y2 j1 K2 r3 m# Z9 a
& P9 M7 S* W& ]* V) w$ V- print 'error: ' + str(e)% j- W2 `! D* y/ a
- ) z2 r0 U7 s2 W
- driver.quit()
1 y5 k0 G9 j+ y- W/ X
复制代码 9 r( j k. n* h/ M2 f
' O( x+ F, f! a* O _& k& a
' \* Y" m# g" Q/ U 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 ) p/ t1 F' n2 q2 u, r. ]
# D) C8 U# t9 B6 u7 S |
评分
-
查看全部评分
|