AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Binom
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单fb耐用号0.01一个fb账号官方合作商
广告位出租   
查看: 9534|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
* K5 M  W3 Y$ [6 M' l; [6 k: I( p1 ]3 r# n+ ]0 _7 ^

' s/ n9 k* [. q2 ~7 R0 `& b" U" ?
  1. 4 [+ r# w" Q2 V6 n9 O, }
  2. # -*- coding: utf-8 -*-8 R: K) _; |0 b, n

  3. , ]! I0 w5 K' ?
  4. from aip import AipOcr* A/ U2 O. a. L. ^0 q* l

  5. , V0 H* D) l9 [% P. M: m9 \
  6. from selenium import webdriver3 r& a. ^4 X' G! J  O- E8 n* q
  7.   S  c  M9 @0 u3 Z  O
  8. import time
    8 ^: E$ k4 n; B( U
  9. . }: O' |2 Q2 q' c9 g+ T# U7 ?: p
  10. import random' y( `& p8 _# C: u

  11. + b- N* ?3 R% [7 G0 q: J. K6 _
  12. import sys,re1 L7 K. Q6 R2 k$ M( s' [

  13. ' V3 P+ D9 u) z1 M9 m" e+ a
  14. from PIL import Image, ImageDraw,ImageFont+ ]" y& t( r. t7 y% r( v
  15.   ?6 x2 v1 f6 ?+ q% z
  16. """ 你的 APPID AK SK """: t& g3 t  b6 @! Q' m4 R/ r
  17. # w$ `9 y$ j- A- @: m
  18. APP_ID = 'xxx'! ?: ]3 [; X  @7 b2 B! p

  19. + i$ o" \! |8 d% P: I
  20. API_KEY = 'xxx'7 R$ a, h2 [+ Q
  21. # Q& i* z7 f5 V- E$ T
  22. SECRET_KEY = xxx'" Y9 O1 M% N+ m  b! G- T
  23. 9 f9 ^7 I; _6 v  x5 ^6 E
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    5 c6 {9 G, r+ T) C/ u

  25. ' g8 U8 n9 G! u! h* F+ `. k6 }
  26. #PROXY = "127.0.0.1:8118"
    ) b- I1 s* m) {# \9 Q! Y& b$ V0 N5 o
  27. 7 n3 u" T3 x* K5 j# B3 `9 X, k& l
  28. chrome_options = webdriver.ChromeOptions()
    0 U( I; [0 q% f$ @
  29. * ~0 |9 B  r9 n8 g) G' w
  30. chrome_options.add_argument('--headless')6 ^# r, Q$ Y! N. n
  31. * g  G+ p' P7 i$ V& O6 r/ b
  32. chrome_options.add_argument('--disable-gpu'). T! r5 q( R  b" o# U- X
  33. " B! D) L% A5 Z8 @; j& P3 e" L
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)4 k/ e6 k" V- Y) m  N2 t5 s( S
  35. & v+ |3 ^  f1 {' Q* h' |5 X
  36. chrome_options.add_argument("--incognito")! U$ Y/ R  j0 e7 ]+ F
  37. 4 y2 G1 N3 d9 Q" Y9 N( {& C
  38. chrome_options.add_argument('--ignore-certificate-errors')1 A' T9 W9 C( o! u2 @, {' I
  39. 1 N! U" @7 ^1 h. U" J
  40. # Win4 k$ {$ ~1 w- r$ w. ?# F6 _- ]
  41. + |, s7 U* ^2 ~# S, \5 B: N
  42. # chrome_options.add_argument("--log-level=3")  F) @# b) _2 j3 j

  43. 9 T2 r: ?: [( ^% v' @8 {7 N, y
  44. # chrome_options.add_argument("--disable-logging")
    8 u& K. b) ?! I3 B) \; F" R
  45. ; M, J% b# ?2 u: d
  46. # chrome_options.add_argument("--disable-logging")9 X1 J1 M. ?; i# `: _" P# _

  47. ! b2 _5 p% H( S0 [5 {+ w. u. ~
  48. #chrome_options.add_argument('--no-sandbox')% Y) R" z" \! C. {3 O8 D% n
  49. 5 l  ^2 n( S1 I
  50. """ 读取图片 """: O9 h% r) y+ y- M0 W: ]. _

  51. . i  `$ A; A5 r! ^7 b/ i
  52. def get_file_content(filePath):1 E+ v8 |% _3 x$ c. ~2 R8 }% }. ?

  53. : D+ r" O8 b( J9 R9 U4 e5 d
  54. with open(filePath, 'rb') as fp:
    & c4 x8 F1 v' J2 P  N8 \, r. c/ R

  55. 7 W' o% f9 s- o5 Q- O' q
  56. return fp.read(): p" w, L3 U7 s  Y1 o" Q1 O
  57. . g# H$ U; ]& i: W  r% Q- @
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)+ Q! M0 `2 e, `+ g! C! N  O
  59. 5 ]5 a; ^8 K& S7 C" ~6 ~
  60. driver.set_window_size(1280, 727), b/ r; ]7 U1 u) [

  61. + t3 v% R. I: t3 k
  62. driver.get("https://youlikehits.com/")
    2 n( Z/ c9 V- d% q6 U% d
  63. # h8 v+ y7 C$ u/ d) ^9 A
  64. time.sleep(5)) M% e6 d+ k/ K; w3 A, T

  65. 1 [: s7 t; ]4 J( ]" Q
  66. driver.find_element_by_id("username").send_keys('11111') #user
    ' ~+ {  {0 u: ~. b$ ^0 p
  67. + t; F  p, m7 u+ {" G1 U9 O
  68. driver.find_element_by_id("password").send_keys('111111') #password9 Y1 p* l( Y9 n& r9 H1 m  Y; H4 A

  69. $ }- x: O# V7 n5 W1 p/ X4 j
  70. driver.find_element_by_xpath("//input[@value='Login']").click()2 i: Q7 a( I: T0 a

  71. 2 ?; ^5 ?: l4 i! `8 [
  72. driver.get("https://youlikehits.com/youtubenew2.php")' J) c. g6 c1 A8 T: U+ d
  73. ! B# J" V5 M* r" A6 _  B
  74. time.sleep(1)
    - V8 z" a1 Q- v9 x6 ]# ~& |0 \

  75. ) Y7 P, ^! L7 @
  76. #Try Again( N2 k; u' ?9 j* l. R. F
  77. , T/ e+ m" x$ {
  78. def checkRefresh(driver):1 c: Z% @2 i0 c

  79. 7 I- W2 u* v6 v4 R; R8 O
  80.         try:1 l1 l0 T  e+ W% e

  81. % L+ l( g. v  i
  82.                 Refresh = driver.find_element_by_id('loadmore')$ Y  l2 }# k& |- S+ G
  83.   t+ g3 ], e) q: s
  84.                 Refresh.click(). v$ w0 z9 R! q6 I8 H" {+ d

  85. ( K* {' W# \4 |6 i: D& i& v; _8 c
  86.                 driver.set_window_size(1280, 727)5 Y6 ^, @# \' s
  87. 1 l, e( P5 w% M+ f& G* U
  88.         except Exception as e:
    . E; W3 C5 h6 ^- V9 l( G

  89. ( z% N3 X- m3 k0 w$ n" [( E
  90.                 pass' {- q0 I- Z8 E# k; C
  91.   D$ |+ i1 i7 T! U: r
  92. def checkcaptcha(driver):
    - f: n! Z: ^% M  R& K5 y5 C

  93. ( ]  F) S9 B1 v" Q7 U
  94.         try:* G( j" h3 ]9 f6 A% Q8 M( r2 A

  95. " ]6 f* M: Z" i9 p4 y% I
  96.                 captcha = driver.find_element_by_id('captcha')$ {# K9 X4 l* s6 x( F# i

  97. % }# ?$ r& G, ^
  98.                 print driver.get_window_size()/ b0 v0 u: A7 g3 v

  99. $ _! \4 }( v5 \. ^8 _  ?5 X
  100.                 time.sleep(2)# }. F7 q/ s/ c( Z
  101. ) e1 T" Z* k. J* h. Z
  102.                 driver.save_screenshot('/tmp/screenshot.png')  r4 X. }: B! m

  103. . {+ M8 @, Q6 K- C9 c. M% `
  104.                 im = Image.open('/tmp/screenshot.png')
    7 q- P6 Q9 G9 q+ X+ e

  105. 7 O) v7 K3 Z  o/ j4 |0 c& p
  106.                 #取消headless模式
    2 m: y  x) Z' C- U! D; z

  107. - `( |& Q; a- }0 Q% H' ^
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS): ~3 v2 q/ x1 m5 C
  109. 9 l& @& ]4 w& `9 L
  110.                 * }3 }- `3 Z3 R* A

  111. 1 O, |" d, W0 C
  112.                 #开启headless模式
    - M1 Q- r7 M5 q0 D% Z. S5 J

  113. / @. |( H6 h' q6 S. U) L# i
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)( O3 e/ [1 x7 ]: _" |) j# p  o
  115. / N5 Y+ H: m  |  U( W
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    6 C$ p1 t: V. r) B
  117. ! S, s* [' w. }" ~% R" d
  118.                 left = element.location['x']5 w  B! Q1 v/ a: n- s9 D

  119. - t3 L9 c( o4 m' j
  120.                 top = element.location['y']+ r; A- l7 a" s/ s) H2 A1 n
  121.   K3 U9 D+ c: p7 p* ]+ M
  122.                 right = element.location['x'] + element.size['width']
    : T8 c- B% \7 t

  123. ( f& J- k9 [! o, C: S2 K- T5 Q
  124.                 bottom = element.location['y'] + element.size['height']( k( o# N5 S  b+ h" A5 G9 t5 ^( ?' E
  125. 9 \, h. Y3 H1 h
  126.                
    ) [' B4 ?/ l6 G, M. a

  127. 2 P$ J0 r5 Z! r' p
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    , j' D4 e7 H0 `8 d' Z' W+ Y
  129. . L! K# ^  Q4 w8 \
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")$ [7 c% ^  d' d: y3 _4 J

  131. 1 L2 [' v, W/ y. D1 b6 K
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
      y8 i1 w" Y9 ^1 N* u

  133. ; A/ J" V! x9 q) J
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    % Q( J* ~  p) P" \

  135. " _8 w# H/ O0 d% v6 W+ m
  136.                 image = get_file_content('/tmp/screenshot1.png')& f3 P. y# b7 u8 b+ p

  137. # b# }/ j  }' E, o' G$ ~/ A: v
  138.                 a = client.basicGeneral(image)5 v5 |7 z$ o  ~! i- \' u

  139. 2 G- x8 G( I8 [: A0 M( b" e
  140.                 print a9 G! z# A# [4 d: x
  141. 6 ^5 M5 e, y  p# v& I8 P
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words']), `# ^6 K$ y6 g5 w; a- J
  143.   y/ a0 u/ ~1 h7 ]% w
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)$ V+ Y6 d5 o% B. A; N, s
  145. 8 r$ i# b/ t* X
  146.                 yzm = re.sub(r'x',r'*',yzm)5 `/ c# s, Y2 P! r
  147. 2 D# m- i( E" s6 [
  148.                 yzm = re.sub(r'X',r'*',yzm)9 ~0 ]/ c; W$ L; K
  149. ) ?" F' o# S# [- ?/ L  I
  150.                 yzm = eval(yzm)' R) r0 A  O/ m2 |  G7 D
  151. + q; q9 `, s( G! H& W& u4 w
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    ' Y% i% X) f/ G8 \# n' k: B

  153. 9 `; a% z5 x: Z2 z' m, u
  154.                 print '验证码: ' + str(yzm)
    8 i) s& O% t3 K& P% ?+ V

  155.   m# [0 I3 m( j# F+ C$ [# H
  156.                 driver.find_element_by_name('answer').send_keys(yzm)# N6 J, l' W% s. s0 ?! p' o

  157. 5 v1 Z- Y, A4 h- i) w+ F
  158.                 driver.find_element_by_name('submit').click()' l5 [' [. [& I  ^/ v$ \( L1 A

  159. 3 f( X  O9 I$ _- v1 R5 L5 \
  160.                 time.sleep(3)
    0 `; J' h9 p) w3 g$ {! L

  161. 9 K, N0 W& {4 @* w  q/ C
  162.                 return 1
    * c& Q/ \# _& L, ~. ^
  163. 4 x0 c5 h, O" Z. r$ e+ w
  164.         except Exception as e:/ a: b6 t) v  o7 s+ e/ O6 T. B! s
  165. 4 l, g" ]4 H+ i( _3 t/ G7 _
  166.                 return 0
    * [: B4 [4 X$ X* ]' s; N$ f& a

  167. # z9 I. e( ]- t0 V- a0 @
  168. def followbutton(driver):
    % z+ n: `+ W% N0 B# K4 B

  169.   \3 P1 Y+ h  a& u
  170.         try:( |. @: e: t! P$ i
  171. 0 w" ]: Q3 W, Z
  172.                 driver.switch_to_window(driver.window_handles[0])$ l( ?; u! @% M6 }" j! V+ h2 u0 l2 ?% l% Y) O

  173. 2 G& g; q, H2 m/ w; P, q
  174.                 points = driver.find_element_by_id("currentpoints").text) q6 N/ p( Q! Q9 k2 b
  175. ) f9 Z3 s! P' j( O0 P" m9 F
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    , a" v* K' q  w* @0 C, ^: u1 |$ l" j
  177. 9 ?1 J. v" [/ z+ _. c
  178.                 driver.switch_to_window(driver.window_handles[1])
    2 o0 M8 b( g0 k/ }% B

  179. # j+ L# A7 v4 G, M5 O+ {! e% R$ A7 Y
  180.                 VideoSource = ''.join(driver.page_source.split())' E1 h' |# ]0 L( O

  181. 6 C9 U2 M/ c  p- r, H8 n% _
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    ; i% p! Q" G8 c+ O8 T+ |
  183. 2 `' Y2 R) {4 l+ `
  184.                         print VideoSource+ {- r8 @: {5 e5 R* D; c2 h! ?

  185. - m& v/ g) c* F* m" X2 P% O# e
  186.                         driver.switch_to_window(driver.window_handles[0])2 Y  |8 ~" ?) J
  187. * M  [! E! x! F9 `* t
  188.                         print "Refresh..."4 E+ e6 h9 m: y+ X; q3 i
  189. ( _9 Y% F( c, x$ }8 L
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
      ~6 s9 t- }  s. p0 k
  191. / I( Q- O; r1 S8 w# H3 _! Q5 ~
  192.                         time.sleep(1)  H2 r  _, A( m! t# |) O1 h5 V

  193. ( I) Q3 K& }# ], `4 E/ e, n
  194.                 return points
    ' M- H! {+ r/ @+ q1 y5 R

  195. # R/ G& E: B% I5 h/ X8 K: ?
  196.         except Exception as e:) i' u7 C+ D7 r1 B# I' _
  197. ' t- F2 O' d3 t* [
  198.                 return 0
    ( t: n+ [6 d$ {
  199. # z: \4 O  c8 c+ z! {# x6 K
  200. for i in range(0,5000):
    ! r; }0 h2 P0 h  Y. A  Q
  201. * A; P7 [* h, c% ~0 D! f2 o
  202.         try:( z" d8 N$ F& m  v. s
  203. 4 d& T9 n2 R3 c2 B4 F2 J/ X9 s
  204.                 captcha = checkcaptcha(driver)
    $ ^) L. r; J$ D

  205. $ v4 u: A, R$ A) n
  206.                 time.sleep(1)
    , t' `6 ]% Q: o$ M

  207. 4 o* ]4 j8 t9 Q2 a
  208.                 checkRefresh(driver)0 s, Q9 N% Q& w  O" K

  209. $ j. d) f0 p6 {4 n* K( @5 s0 z
  210.                 points = followbutton(driver)
    ; b0 X9 v# G- p, v9 U* G& E1 Y0 }
  211. " i( l$ A; p8 \7 Y3 }/ M) @+ b
  212.                 time.sleep(65)
    + g, m1 F7 }# f3 r' i1 H7 C: t
  213. % h# M9 _3 C/ v% n
  214.                 driver.switch_to_window(driver.window_handles[0])" f! t2 W8 r8 Q: g' p( U3 g
  215. 6 y* a$ A8 {: V) n2 d
  216.                 tmpp = driver.find_element_by_id("currentpoints").text0 V: N2 u* b0 _6 P3 v0 S

  217. ) U0 m/ I. p( M8 _  G) K9 F& E
  218.                 print "points: " + str(tmpp)# N# [. c& w, ^( k$ D, i7 e

  219. 3 Y; \! G; Y+ ~  Q
  220.                 if points == tmpp:8 K0 k3 ^2 X( O, j6 H: }

  221. ) A3 o& k2 v, {. `" b) u% y- I1 c
  222.                         print "Refresh..."
    3 R7 \* |% {- D4 D: _6 U& M) d" f. C
  223. 1 L0 k$ n  ]; G$ R& n3 W8 k! C
  224.                         driver.get("https://youlikehits.com/youtubenew2.php"); d8 u* l# k  T2 a% P; h1 l0 b& q2 h
  225. ' P8 L7 B( u4 n1 ^# q' x( u& c7 _
  226.                         time.sleep(5)
    $ e% S' m9 V, V1 }. k2 M) A

  227. 6 S/ Y; I6 {2 |5 e
  228.         except Exception as e:
    - ]% `: F! W/ V$ ^

  229.   [' l+ d! n6 U. L( b0 d
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    7 _8 s0 j6 Y9 G2 p9 G$ N, K
  231. 0 L( H* r" _1 M7 k4 P
  232.                 print 'error: ' + str(e)' K/ w8 B" j2 m% [5 c

  233. 2 y5 y' _) |& P& A1 e  h: [: g
  234. driver.quit()0 F# J' l+ l4 f+ _! d! W. N# j
复制代码

# d* m! T: Y. e  ~! D8 K
! G# M# a, U: B# Z9 Q) S
! e2 l7 Z2 J  N8 n* `7 B# @5 u 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 - b$ G# ]: u6 l1 S; s4 |+ J

1 `/ F( J& S% a1 u  k2 s

评分

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

主题

166

广告币

246

积分

初级会员

Rank: 2

积分
246

社区QQ达人

发表于 2018-9-1 20:51:05 来自手机 | 显示全部楼层
大佬太哇塞
回复 支持 反对

使用道具 举报

9

主题

974

广告币

1471

积分

高级会员

Rank: 4

积分
1471

社区QQ达人

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

使用道具 举报

176

主题

1057

广告币

4113

积分

超级版主

Rank: 8Rank: 8

积分
4113

社区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
& w) y" ~% F. K% n8 j' ?! t6 X用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

" E) j5 y( O* f' J# B小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈5 M& m! T0 Y8 H$ q
8 X. f, Y! d! M* E
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:42 , Processed in 0.045638 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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