|
|
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
3 n- B1 i7 o5 ~ Q1 Y V9 X
5 N$ `& ^' G: S" \( y* `; U" X
1 q$ n6 j. S( O/ } V* }- ' k3 C5 n8 }9 V4 o9 W- v/ O( O
- # -*- coding: utf-8 -*-) m$ H7 w" W: Z9 n
- 8 [$ O2 }% x1 S1 } |4 L2 p$ S
- from aip import AipOcr
- t! d y: R6 m* p9 d6 S7 F
" M" U" m/ ~# X& m- from selenium import webdriver9 Q& N8 i, Y$ v
$ G; s/ B6 z7 Q5 \& ^5 L, o2 I. a- import time+ [# T0 ]3 I, ]& F! \0 G
- 1 c/ Y; e4 V a6 p! h
- import random3 n% [! X$ {* H( c, U2 {1 {
- 7 `9 v, Y0 k+ G
- import sys,re
% I ~+ p5 K; S7 m9 b6 x - . z3 r4 ~2 ?, u6 H; E
- from PIL import Image, ImageDraw,ImageFont
1 |: P: L4 a+ a) |% \, U
7 a! \9 `5 d$ j \' E- """ 你的 APPID AK SK """4 \$ M B5 C- C3 W: s+ U
7 ~( v1 a. L' t7 O/ ^# ]7 M/ |- APP_ID = 'xxx', v6 j; j8 s0 e& n& n+ {6 h
- 1 _6 N' w4 d8 Z6 V2 N5 X3 c
- API_KEY = 'xxx'; e! @4 U2 x. N$ ^
- 4 |; r. |; W9 |* @' [7 c
- SECRET_KEY = xxx'1 P! I2 ~) t% t. I7 d
' c* \2 s3 U# O9 P4 c( D0 J- client = AipOcr(APP_ID, API_KEY, SECRET_KEY)% T/ e' _" v/ S6 @" D/ a9 B
1 x A2 R. K, m- X8 d- #PROXY = "127.0.0.1:8118"
) W3 F0 F. y2 }" _7 g9 y0 K! R( |# S
# o$ S& Y0 \) D4 [' E# t- chrome_options = webdriver.ChromeOptions()5 i9 K, {& E# t9 ^
3 ~( C: {3 s( p# g- chrome_options.add_argument('--headless') }3 S0 E/ t( ]; o) R7 D# t
" G8 O# `; B% r5 N- chrome_options.add_argument('--disable-gpu')
" i" m0 }0 a% v
9 l) H, ^* [9 @- n! p/ [# W- #chrome_options.add_argument('--proxy-server=%s' % PROXY)' z) k+ u& r/ V; w
! F) M7 m+ ?" q2 |" c- chrome_options.add_argument("--incognito")+ s4 F; W: O1 W6 s% `( K) a- V6 e! W
1 |0 C- @' \' N9 S. _- chrome_options.add_argument('--ignore-certificate-errors')
8 P3 g& H; H+ y8 C, p: H# V4 J - , w/ g; n& ?7 O$ y
- # Win
8 Z, [+ k) n+ b1 ~
% y* Z) L% h0 y! O+ L0 y Y- # chrome_options.add_argument("--log-level=3")
6 R. v/ M4 v+ D& A; a m - 1 u& O( f* o w! S0 z$ m: j
- # chrome_options.add_argument("--disable-logging"): j" R- x; B" s9 c$ Q! @$ m
- : U% L% y7 N) i: r
- # chrome_options.add_argument("--disable-logging")
: K$ X! E; W3 T0 c( N - 4 a5 f( a! y* C5 ~4 }6 A K6 Z
- #chrome_options.add_argument('--no-sandbox')
6 @ w8 h# k p) A* D# D
. r2 O! m+ H6 M- """ 读取图片 """5 q! w F4 w1 [$ [4 x% Y0 c
1 Z$ L7 e7 A _+ `4 u1 Q$ s- def get_file_content(filePath):# ]& t& ?6 S- Q
- ) r* F# M# p4 O
- with open(filePath, 'rb') as fp:
2 _* O' ]8 g1 g- T* _7 Q/ [ - - t; b" V1 t& x; D8 \1 m' |" ]6 L
- return fp.read()! w7 c0 V3 x* ?4 ]: |" B
- / X/ d* l4 t' B* j; \: W
- driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)- l* V- ], D) r2 a/ p2 [# P
+ e; D" K/ j1 g- Z- `4 [) P* f- driver.set_window_size(1280, 727), j% Q8 `. z! N
$ N) D7 D; Y6 ~/ U4 `" ^' q0 @- driver.get("https://youlikehits.com/")
$ o) y; ^0 i5 q& e$ z a
! B( d! q) P& L# Z- time.sleep(5)5 B' W0 E2 z4 j3 X: w
- 3 P) y1 v( u7 g* I( o$ ~
- driver.find_element_by_id("username").send_keys('11111') #user
2 v: a( J$ G' O - * k2 O0 P! F" g
- driver.find_element_by_id("password").send_keys('111111') #password9 Q' O* F5 a4 @6 |" \
- * B& i" f, h1 @% m, J: Q9 F( I
- driver.find_element_by_xpath("//input[@value='Login']").click()
# o+ h% u' @( U$ [ d* o& S
$ d% H% I8 Z: b! c" O- driver.get("https://youlikehits.com/youtubenew2.php")0 z) _" ?% T9 X
- 7 e3 ]/ K; X2 `$ P) k4 u
- time.sleep(1)) n. t) b+ K9 A
- 7 p, v$ Q- F: i: l. q( n3 a2 f
- #Try Again' k; p# [* Y# V
' W6 q8 `$ L6 r9 T* {- def checkRefresh(driver):
/ |5 O/ s# m4 L1 K
9 f2 n G/ ^/ W1 d- try:- m/ @2 b# x, W/ t* T) r
, f, G8 X0 O( o: T9 @- Refresh = driver.find_element_by_id('loadmore')" h* D" d- A) m' J. K0 U+ J
- 7 S4 M; `& ` o5 v
- Refresh.click()* h3 c( Y( p! I. e
. B) M0 z9 O1 v4 w$ U9 _- driver.set_window_size(1280, 727) w }% X% U5 s+ P3 o
* Y, [7 l( d& ?9 y! ]- except Exception as e:
$ {! s5 T" L9 p& E# l2 r8 Z" }
+ T9 X) }7 H* }4 u# Z W( ]- pass
/ h( h4 E/ Z. F. |- w" y4 u( x
2 K/ W% b" E+ B( o- def checkcaptcha(driver):
# f1 T; R' O7 O
5 y$ Q2 h; c" Z1 u d- try:, A3 N; s( u% g: o* a% Y, h
/ r$ B3 G( P% y, R- captcha = driver.find_element_by_id('captcha')
# T' ~8 v& ^1 N/ c- R) N8 {
9 {) u4 C+ U$ m G, \- print driver.get_window_size()
& J4 f: {$ o5 E; k( d/ C; p - : B6 N% { b' I( i5 W6 ?5 e9 ~
- time.sleep(2)
r3 c6 L- G+ A; y; z% }
& J* W, O9 p$ q/ @1 `- driver.save_screenshot('/tmp/screenshot.png')4 |) P7 p5 _* S
( d. {* d1 K* @) F3 X, W5 R9 U, q" y- im = Image.open('/tmp/screenshot.png')
2 r9 \/ W+ {) v' h0 w
" J) {( E9 I3 O9 r" P; t' {- #取消headless模式
2 p' J5 D4 u. ?0 o$ ~- L+ v8 h \ - 9 A: u" J( n, M" j$ ^7 E, o6 A
- #a = im.resize((1269, 610),Image.ANTIALIAS)
( R; `0 e- W/ K' F0 X" T - 7 E+ V% n5 \+ e% N
- , k: y7 {& `* b+ y$ y
; n0 Z+ C0 @9 B6 q. Z- B! ?" U0 U. G- #开启headless模式
C0 s# p5 o& n8 `! p1 |
8 N0 \3 d E0 d! B- z. G- a = im.resize((1269, 727),Image.ANTIALIAS): t1 N1 f/ `8 `( a& n" i3 x% W9 L
`) N- N4 R9 u1 u% _- element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
+ G+ }3 ~/ K$ f& o
. |/ z, V7 d: q/ `* J" [- left = element.location['x']2 l7 r7 i$ y3 e6 \9 y5 C
5 O' }" o0 P3 V9 \. v- top = element.location['y']# T: R9 N8 F% t
& t# E& \9 n* w) l% E e( J7 I- right = element.location['x'] + element.size['width']' n0 P2 H6 n7 E
- # T4 K' n7 p X
- bottom = element.location['y'] + element.size['height']! e! t6 I! \5 k2 z# Q
- ) y# l6 S4 j2 m. O
-
! n- |# e3 k. ^1 V0 D
: U, g, G+ O8 W. x v( f) J- #element = driver.find_element_by_xpath("//div['#captcha']//img")
; F# `2 H8 Y, D8 u
' G, `# F0 h9 {, t! M- #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
0 j0 W5 C; _ i) o0 X - ; G" Q5 s. a& H& y
- element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
: C9 ^% _% i; ]6 |5 J
- }: U$ [' W, r, H. |# P( H" f" C- a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
) w9 {6 T) l9 ^- n0 Z4 R
$ l) F2 C$ \7 j2 y- image = get_file_content('/tmp/screenshot1.png')
9 A& ]3 a2 w% ~7 b4 q- q
4 X6 H$ h1 p! O. ?3 t- a = client.basicGeneral(image)! d Q8 f4 j0 k
4 f9 R1 c9 q6 ^- print a4 b) {, x* d* l$ x3 Q
( @) p, ^$ Q# v0 N) Z3 Z4 _- yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
6 q/ q/ L3 _$ z - 8 g. y' r( C& y7 E4 h( Z
- yzm = re.sub(r'\xf7',r'/',yzm)
0 _0 s8 T) E, w* {* T - 6 z5 J2 L$ S0 V, E# p
- yzm = re.sub(r'x',r'*',yzm)" G' c# G* y$ d/ E6 o& A
- ; w$ {1 ~1 V( ^' r, N
- yzm = re.sub(r'X',r'*',yzm)
5 e7 K! I, Y# ?
5 m. \ K+ n- J: t7 S- yzm = eval(yzm)+ C. X" b/ g9 _( O
- ' x( x: o, R }7 d9 S, T
- #yzm = eval(yzm.replace('x','*').replace('÷','/'))
4 B3 @/ E7 n. f& e( W' S4 L, C9 M - ( @" ?3 a O* y! z8 ]2 i
- print '验证码: ' + str(yzm)
2 g7 v! W# z" X+ K. V( }1 \4 N - ; }1 G2 \: a& v. d* h4 H" _
- driver.find_element_by_name('answer').send_keys(yzm)
' H4 m1 t5 l0 ^+ `3 l
. z7 {, j2 U; O- driver.find_element_by_name('submit').click()
, u7 f$ E5 L( G - 8 {$ J& g3 q k# v
- time.sleep(3)0 E4 o; V. O9 {/ ^ |: J
6 U1 v3 h0 ^6 d- return 1 ]8 u: p4 {7 { S* Y
0 v" r1 m0 c1 y8 @7 t! t( b- except Exception as e:/ c, z: q& o) s# @
5 ]% i5 Y( v- e9 h8 _4 q4 r- return 0
: a" Z: f, u' b& h
7 _9 g* M, v% b/ @7 K- def followbutton(driver):+ O: Z! u- D# p0 h
- : p9 v$ [3 \0 t) K: x+ n. l
- try:; b% T7 Z. ?. o. F, ?2 H
- 4 [ l& m6 i* z9 t6 `
- driver.switch_to_window(driver.window_handles[0])
: ]. G6 E: q" n1 {5 z' S - $ O- @& K4 c1 r0 V" i. O6 x
- points = driver.find_element_by_id("currentpoints").text I6 P* `' v5 t( U ]8 |
- $ a# @* M! g: U) j& [! t) n! [
- driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
5 S: z( v6 J& {2 V* W
2 @6 N; N! S# [% C" J( A( P/ w- driver.switch_to_window(driver.window_handles[1])
, `( R2 J& H; U - 4 C4 _& W2 ^6 M7 g1 ^4 U
- VideoSource = ''.join(driver.page_source.split())
" h# Y C) C. t - 0 M) w4 \- j- P! \6 g& b
- if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
8 ~/ I f5 }' `7 H1 s+ O
- t8 [! {* j0 ~; e# t, H- print VideoSource& L5 m/ g+ g) z. [; ?% m d
# T0 T( N' l8 Z- driver.switch_to_window(driver.window_handles[0])! ~' X( ?! k3 c" V
- - } Y8 [- P# X. `( M# b0 Z5 p
- print "Refresh..."
4 }& r& G' J% p2 L - ' z; ~8 R" t7 p2 {5 O
- driver.get("https://youlikehits.com/youtubenew2.php")
9 f- M7 [* M4 T4 r! h, j. o$ }
- O% i ^4 D! `9 k6 Q R0 y- time.sleep(1)4 i- U& I. w( X+ w' d
- 9 C4 e& J Q, V
- return points
# L* v5 j# y8 u( q - ( y. @( ]* V! X5 X+ S
- except Exception as e:) e8 l' a3 {9 T; Q
- . `3 l, n* c' T/ V! z& H: M
- return 0
, J" d+ i d; P: S - # A0 K0 ?' ^7 W
- for i in range(0,5000):
; T R1 E! e. u" H7 r
; v; H1 g. S% [0 g5 b6 K7 ^- try:7 H: U2 s( c% O+ [+ A' P
- 3 u- e9 X! Z; M
- captcha = checkcaptcha(driver)) j& W8 h4 s; }2 k# I
- * @0 ^/ w; w) S9 T! x7 k$ K8 ^
- time.sleep(1)
1 [) o' h" R6 \9 c1 J+ P4 D; s9 ^
0 \) O+ K! I& ~: _+ w2 v8 R6 ~; E- checkRefresh(driver)
, h9 _4 e; j9 _& u; \
5 v }! h! j* i# P! u! k* t. ~- points = followbutton(driver)
; m; p$ c' ^6 ]1 q1 Z* }
) q* H" G; A* k5 j- C- time.sleep(65)% |5 \6 s* f1 |
- 0 D8 }4 U* O; @' k9 Q4 m
- driver.switch_to_window(driver.window_handles[0])
: @: h' X5 `6 W/ U0 R# I# z% ]
1 h$ Q0 E: {. i" C0 M1 n" K4 ?- tmpp = driver.find_element_by_id("currentpoints").text
1 S; r/ ?) X) X. ? - 6 M0 ~. E' t( |# S/ O" |! c% u4 x
- print "points: " + str(tmpp)
4 o- _: K. j8 W5 o; [
# T& O% ]# ^) h+ |- if points == tmpp:
( J4 m; ^& n! I0 e
# w1 ?/ K* t* }$ k- print "Refresh..."
$ j6 z) f4 N3 g3 n5 V* C3 z
3 Z. e0 K% z. X$ d2 V- driver.get("https://youlikehits.com/youtubenew2.php")
% u. z4 _) X1 e- l* t' z& F5 u3 J f - 9 c" c( Q; B8 L: W
- time.sleep(5)1 f, q6 h/ P3 A6 |0 \
- 9 L# q9 E+ \. O+ q B
- except Exception as e:' n* l7 V- b) Z* k* \- F" H
, d1 Y0 C% Z; n9 [" X- driver.get("https://youlikehits.com/youtubenew2.php")
5 |5 g: @ B& N& x3 C: C5 o
1 H) K4 _" z7 l2 m v) @5 y p8 {$ L- print 'error: ' + str(e)
; h. D% j, e8 A* J& K6 F; `* B/ e - " y! u7 c @5 e: o6 W% z" @3 m
- driver.quit()
7 ?. c t4 P! M( f/ \$ H
复制代码
2 p7 F0 @6 c6 o9 T
8 R' D6 u2 f9 {) Y7 v; t, r
4 g: u- w; W8 h3 o' |' }0 R: y8 L 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 - j- o9 a4 ^$ w) t4 G
9 S( a+ r# a( d4 z, [+ r( V
|
评分
-
查看全部评分
|