AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Adsterra China
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G需要代理IP?⚡️Proxysites.ai⚡️指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
FB BM不限额,短id账单户E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
Google、Bing官方总代  联盟流量开户FB资源,账单户,分享户,国内一手FB企业户BM户账单户源头PTM全球虚拟卡—进来交个朋友!
PTM虚拟卡⚡️费率透明⚡️额度随心FB虚拟卡⚡️消费越多返现越多虚拟卡 - Pay2.House【找量】BA独家Nutra单找量
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10007|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Lemft
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 ; j# J* b9 ^, h

% Q1 t$ l# l* H+ J6 `& w7 E# o$ r8 c& k( K- u: P) P
  1. " N( W+ i- g. M/ f; \5 f+ O
  2. # -*- coding: utf-8 -*-! \# E3 K+ K# B7 ^# |
  3. $ S) D* c, s! R9 y6 X2 L) u
  4. from aip import AipOcr5 u$ Q7 V" v0 x; C2 h- U' B

  5. # o$ U# ^3 E  \+ Y' ?6 I
  6. from selenium import webdriver  Z# i) @) r7 J/ w

  7. 0 F% `9 q- Y1 X3 O* m0 p8 z$ A
  8. import time% f) L" s4 w0 K2 w7 U( K6 f1 V" b
  9. 7 p+ H+ x: O6 e5 C7 n& E, ~% N
  10. import random
    ) x: r1 U5 J% @+ I( C3 b

  11. " k' |& j- q# |( H$ M9 n
  12. import sys,re
    / R) h7 ?* W, F" h) ?1 [
  13. + `, l: K9 I' [0 G7 |
  14. from PIL import Image, ImageDraw,ImageFont: ^& L) J8 z! G/ M: d, R
  15. - F. q" w: B) Z9 |* H6 g/ h
  16. """ 你的 APPID AK SK """
    , L& n  o0 L5 s. ]1 Q* W
  17. . x; e$ D/ {" H2 d3 I$ p9 b
  18. APP_ID = 'xxx'
    , ]# f; u# b% N& ?* ]- m+ G/ f8 |

  19. ) R6 v/ P- a( l3 _0 {, e
  20. API_KEY = 'xxx'2 H5 T  j' V; r* X
  21. 5 [. _# j8 z4 a. r# A
  22. SECRET_KEY = xxx'
    & o1 u" k1 E2 j

  23. ( k& r+ G, N) |6 t- m
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)4 \2 c1 g) B4 z+ H: a* S  _' }

  25. / v$ h6 U+ q1 @- `
  26. #PROXY = "127.0.0.1:8118"$ y5 g+ Y- Z$ f! O8 e! {. b1 C' [
  27. 9 Y; }$ D0 [5 Y# |/ d
  28. chrome_options = webdriver.ChromeOptions()% q# l; W; s3 \5 h5 U: i" |

  29. ; O9 [8 d! @5 _1 C
  30. chrome_options.add_argument('--headless'): t6 D! x' t) b4 Z) w1 b

  31. $ M, M# I9 R; R; @
  32. chrome_options.add_argument('--disable-gpu')
    9 q$ L% a' Z; r& c  k
  33. . f2 r" g, o0 _+ \1 C: _  W; w
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    4 F; S9 T( U) u7 S* H, t
  35. # a3 {. A5 R( _* N
  36. chrome_options.add_argument("--incognito")
    $ ?: A+ T6 X7 X  q
  37. & P. z- V! z/ U  R
  38. chrome_options.add_argument('--ignore-certificate-errors')& v. {: m# Y" m

  39. & L% N! f! @% c5 P& R& T) s5 j1 p7 x
  40. # Win
    ! ~. `1 F$ Q9 @
  41. 4 ]2 R+ ]; K; C  g7 B4 K
  42. # chrome_options.add_argument("--log-level=3")9 w! E* ]; z: z- i% _" C' _/ [
  43. ' ]8 N4 {7 P7 J& r) M& W8 d
  44. # chrome_options.add_argument("--disable-logging")
    $ a" f6 r- e' e! `
  45. 3 X+ |' r+ U: {+ @$ Y
  46. # chrome_options.add_argument("--disable-logging")
    ; Z- |% _) B6 }5 P7 R. B% k# k

  47. - }+ a  H8 i9 }8 Z% {+ M( W
  48. #chrome_options.add_argument('--no-sandbox')
    9 L% W  f( F4 ^: Q. _3 R

  49. " J6 _, Z! W5 a6 a
  50. """ 读取图片 """% c+ L, h- ]+ h
  51. 8 d& r. O3 O. e: t6 m* P  H8 p" X7 t
  52. def get_file_content(filePath):1 N; P) F7 G& }5 Z

  53. 8 ?$ {: C2 p# @3 u: D7 p" Q
  54. with open(filePath, 'rb') as fp:8 |, A8 Z" E& D6 R4 i1 d& w
  55. # Q$ P/ o" i" \9 u: N. F
  56. return fp.read()
    9 z0 l  z" k4 ~- `4 `6 v$ Y

  57. 8 f6 P5 b6 V8 @
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    - h$ B5 n& u4 m" Z2 R  H0 q% a0 g: ~
  59. 8 N5 _9 t- c& e! \( `6 v" L3 n
  60. driver.set_window_size(1280, 727)
    : O& @1 F1 D  T

  61. $ Z7 z$ x" b( m7 @
  62. driver.get("https://youlikehits.com/")7 y. s( h0 l. |( B$ I3 A  J! s
  63. # u4 L; K5 u) z4 m6 R+ i2 x
  64. time.sleep(5)
    9 _# L7 x/ Z' W
  65. : ~: [* ?7 q, N& C2 L
  66. driver.find_element_by_id("username").send_keys('11111') #user. J; e8 p: d  j$ L

  67. 8 G" W& A# V3 |# Q
  68. driver.find_element_by_id("password").send_keys('111111') #password0 D5 g8 j$ n# k& r
  69. - O- n4 m# _3 @) ^! Y( @+ m; N
  70. driver.find_element_by_xpath("//input[@value='Login']").click(); ]  b9 o. ]# A1 G

  71. 8 w. j: O( M0 m4 R. b* f$ N
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    5 z2 I' `6 X  L/ {0 p8 u( a7 i
  73. $ j) L+ U$ n( Q6 {/ ^" q3 _3 O3 w0 x
  74. time.sleep(1)
    * @3 ?' I9 X3 x% S/ @' b; X
  75. 8 m" T( I( I+ g- Y
  76. #Try Again
    ( P/ ~8 F9 V2 V* t- [4 o! D

  77. ! N/ I! l" w' Z: ]
  78. def checkRefresh(driver):
    ) s( q- e) k- d

  79. % @9 n: L! y+ e( p4 ~
  80.         try:$ Z# O% s' L% C: U3 ?6 u) O

  81. 9 O6 y7 z$ H: U
  82.                 Refresh = driver.find_element_by_id('loadmore')
    $ |+ D2 j& r6 p; B
  83. ; Q$ w' _. Z3 S- P, r5 i9 x
  84.                 Refresh.click()
    & y8 [8 A" u/ e9 m2 ]9 i  ]

  85. " ?8 d6 ]" S* @9 J2 \
  86.                 driver.set_window_size(1280, 727)7 ^8 |, V% x8 @! t% k
  87. / ~$ K. O& U$ D
  88.         except Exception as e:
    7 }( `+ {2 P5 `0 {
  89. 1 a: S! c* ]6 S  d* H- O
  90.                 pass- p7 O" Y6 K. \8 M) ^- R6 }

  91. ) f# @8 L0 I: B# E0 G
  92. def checkcaptcha(driver):
    ) }8 d' R/ ?. ~

  93. # e4 j0 \+ G5 t' @  S* h( k& T
  94.         try:# Y  o& G+ s+ Q3 J. c' E3 ^

  95. - Z9 z) s/ d, D. D5 @  Y& }7 z9 X( k$ ~
  96.                 captcha = driver.find_element_by_id('captcha')
      G8 V' A9 P$ j1 ]

  97.   \+ V- X* i& x; W$ I* J! |- ^
  98.                 print driver.get_window_size()3 g  D. s# w( E& ?6 u
  99. ; z. Z2 f6 k4 C! Y9 d% E4 y
  100.                 time.sleep(2): e5 P! g1 f% P# x; s. u9 I

  101. 4 a& N$ _% r5 A8 H
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    " ?# _: Q% o8 `. c: H* o! t

  103. : v  q1 H3 r/ W. s
  104.                 im = Image.open('/tmp/screenshot.png')
    # l5 K- h3 _5 \. B! q
  105. * i7 s& K& j  W6 K* A  I
  106.                 #取消headless模式
      e+ n+ G+ d. v' d

  107. 3 E+ Z0 V$ c/ p/ v1 B9 v3 e
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS), F; }3 g( k( n
  109. 9 w2 c: Z3 L$ f/ R1 o9 V
  110.                 ) x* S  ]' z( F3 k

  111. 0 G9 w& H0 T- e3 \
  112.                 #开启headless模式
    - K* N+ S# T6 M6 q/ C. o( y6 ~
  113. 7 m" k  @0 [# z" e
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    5 q; B: j+ q- ^1 w* b6 Y0 F. A
  115. : Z& F* N' ]" a. h  u
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']"). [" t+ M& I6 x2 A+ B8 D
  117. 6 K% A2 @/ |" L) F* G
  118.                 left = element.location['x']
    8 W, ~7 L6 F; z' M

  119. ' N' S8 g  }  B5 d8 l
  120.                 top = element.location['y']+ s( I2 n2 H: [) T: A0 }# h$ Z

  121. 6 r% S3 g; ]# h0 E
  122.                 right = element.location['x'] + element.size['width']2 _( Y6 _# |. k0 e4 P  U7 d  M
  123. 5 [& _) a. f3 Q4 Q
  124.                 bottom = element.location['y'] + element.size['height']" U2 ^0 |" o1 w# r+ @8 c, S* u
  125. ; Q' y; c* e) |; D# @
  126.                
    ) \- A8 @( i  _1 Q, G" K

  127. . {' n, k- M8 K/ i5 [2 u7 n5 T
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")% r$ ~2 o" h8 l9 Z, o  K2 y
  129. 6 u$ G5 T- p- }
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    / ]& U  J/ e0 g7 z' M

  131. $ B# P3 t% U% I$ U) `; m; x" k
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")  i# L* ]7 i9 ~' `
  133. 3 y4 x+ E) b- O6 F  U" X- l
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')8 ?( M, W) v' a: I
  135. / O' `! x: G0 f) k& d5 Z
  136.                 image = get_file_content('/tmp/screenshot1.png')% u; A1 L2 P! A% c% ^5 ^% G; e% Y8 U

  137. # x; e9 w" T& z3 t$ n2 M+ U+ |' H
  138.                 a = client.basicGeneral(image)* s5 N% F+ j: i7 N/ q) q, M$ @

  139. 9 W/ h& L: \; q: J' M
  140.                 print a
    1 a0 w+ ]' t, P# Q) O

  141. : d8 {7 \! J- ^( W) ]& M
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    6 H* y& o$ v* N
  143. 0 {$ ]' b5 i4 m' q
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)) m* k; T0 ~  @
  145. ! ]* X5 J4 q5 i" z
  146.                 yzm = re.sub(r'x',r'*',yzm)
    ! i* Y5 b$ g5 ^& `  k8 v! v

  147. : |# w9 J4 g7 T: z
  148.                 yzm = re.sub(r'X',r'*',yzm)( U/ k* ]4 ^: T( `! h& t7 [5 ^

  149. ' U6 B7 L- x8 h0 ?0 n
  150.                 yzm = eval(yzm)
    $ g5 G$ H2 y. }* M% B: Y

  151. % n1 F) i/ |! {# O9 _
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
      b' W8 L0 d- u( U) y% c2 ]: ]

  153. 9 x6 c3 R+ n- _  H* @7 p
  154.                 print '验证码: ' + str(yzm)
    8 q# }  w+ e+ f) }2 C
  155. 5 ?9 g4 g: b% S* A$ n
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    9 R4 f" Z  j- h4 V1 g/ u

  157. 0 X& F* L* @- o( f! s
  158.                 driver.find_element_by_name('submit').click()6 Z4 j( Z' ]. b; Y( C. i9 |8 P
  159. 8 @0 e' ^* V1 G4 S  `
  160.                 time.sleep(3)9 O0 L3 i5 g5 v
  161. + _) E; i, V7 ~: w( R+ M
  162.                 return 10 g* `( E- M: A2 N

  163. ( Q$ E8 Y3 p6 c* a# r: s( q
  164.         except Exception as e:. O/ F' U2 S9 [: j( X7 d3 I
  165. 5 Y) O# r( Y, `2 E2 D
  166.                 return 0
    ; h, w: s; C1 A+ }+ i

  167. # Q/ L- d$ ~: r1 p
  168. def followbutton(driver):3 I. ]- M2 r; \' n' F. ?
  169. : o- E, B' [0 r
  170.         try:
    ' |& r: y& v3 e2 F# T9 u+ s# _
  171. 5 \1 n6 w- ^  {& ?- \5 {, n
  172.                 driver.switch_to_window(driver.window_handles[0])
    " K  J# M* @0 I: ?

  173. , e$ M# E1 O) Y( b; z
  174.                 points = driver.find_element_by_id("currentpoints").text
    * E* l. F/ \; h4 l( W8 j3 H5 a
  175. : K5 F3 Y4 K& k+ [+ G& r
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    ! K, p% U% J, l( }) x0 W+ M) M
  177. 0 H; ^# o" [. p8 I  I
  178.                 driver.switch_to_window(driver.window_handles[1])6 {2 Z6 z6 O% T

  179. # A9 W. \/ i6 b) b. |) {. V$ o7 k& L
  180.                 VideoSource = ''.join(driver.page_source.split())
    ' \, w/ w6 A. |2 F% b
  181. 9 r2 ?( f9 w1 c  z/ D# v
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    7 U3 T5 n; t; q9 y" ^+ `

  183. - V- f2 e% ~1 h4 Q. L
  184.                         print VideoSource2 A& ~! F* o7 e" j: H% N5 u4 u
  185. # T# j' s) W- o" k5 _1 t
  186.                         driver.switch_to_window(driver.window_handles[0]); H$ l; l9 Z$ A5 ~" Q: O
  187. 8 V8 x4 y/ |# z8 \
  188.                         print "Refresh..."& |! V! Q" a$ ^5 h- i9 Q
  189. ( @7 a% b. ?- D# H' Y! z
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")5 Y6 p. U, N4 O* m5 v. Y) h) _

  191. # X  Z5 u5 t5 U- d7 ]
  192.                         time.sleep(1)
    5 Z+ N; Z) r+ a/ Y/ z  ~8 P
  193. : `/ ]9 ]7 q5 e$ h
  194.                 return points
    2 c- X/ X/ \: o, ^6 y' s
  195. # E" k0 K9 m! g! C" B
  196.         except Exception as e:: P% U  r6 t% F0 t1 e3 C
  197. 5 Y5 B  k5 h1 B1 e& O
  198.                 return 0
    " y8 `" m2 N$ k0 z5 O  L

  199. " k- X- D. ]% M0 S8 C4 i  E
  200. for i in range(0,5000):' B/ m& {6 Q5 T" P$ [# I
  201. - W. H" y. R$ M" U% M' ^: K
  202.         try:
    0 }$ |1 F$ p3 C1 _

  203. : y$ Y* ~5 e1 A% Q: g$ g: L, s3 X: U
  204.                 captcha = checkcaptcha(driver)
    6 B4 F# B( H. ^& V. B0 K: }

  205. ) x% n5 h. g  o4 S, M
  206.                 time.sleep(1)* z9 B5 Q. K; O) h
  207. ' s: N+ ~& K* O8 R  h" n
  208.                 checkRefresh(driver)
    7 K2 M6 m) g  O. ^" J1 C& M

  209. 7 Y; k( F( a- c% [6 E$ p
  210.                 points = followbutton(driver)
    + F; ~6 X7 o( `1 {) P' [/ p$ r( z

  211. / b6 Y$ o8 L, U# z  P* a& ?  c
  212.                 time.sleep(65)+ |. h7 l4 A& T- {- L
  213. ; C4 a$ K" T% i
  214.                 driver.switch_to_window(driver.window_handles[0])
    - n: c% i* P9 I  e  Z

  215. ) R( p! f. R" ?: Y3 T2 A
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    8 R- w9 X' e) W3 I

  217. ' m3 z- x# C+ q4 b
  218.                 print "points: " + str(tmpp)
    # f. }) L! l8 `& w& p6 H/ p

  219. # Z  \. V% q  j- B
  220.                 if points == tmpp:3 k5 F) F7 d- _
  221. $ ]' R+ f% [( p8 d; k
  222.                         print "Refresh..."8 p( K$ @. y  w0 Z9 o8 {' N
  223. 7 C/ A- d1 q' o& v# C
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")  x6 }3 p7 G% Z
  225.   s+ g8 r9 h# O2 B( w
  226.                         time.sleep(5)4 C7 l0 `% v' ]# K
  227. , }( N2 d+ g" U+ W$ V
  228.         except Exception as e:
    ( v! u2 w8 e' u! v

  229. " E8 X( Q  x- i3 G3 W
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
      y. _( L- o4 j9 h

  231. / Q6 v3 z; {; Z" b5 ]; N
  232.                 print 'error: ' + str(e)( g9 u& N6 N5 i' X  ~8 c3 @% `
  233. 0 Q9 n( s8 H* L8 m9 z
  234. driver.quit()5 P* [, _3 \# E  b$ M7 c
复制代码

+ x) o! E' g# L1 r, d! B" `; R. {; q! u2 Z: T% P- V+ s
8 f7 R# g% `7 q9 p% h
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 2 o# @/ F: r  u& T( H) d

; A0 Q2 `2 e% _% 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

主题

987

广告币

1483

积分

高级会员

Rank: 4

积分
1483

社区QQ达人

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

使用道具 举报

176

主题

1117

广告币

4178

积分

超级版主

Rank: 8Rank: 8

积分
4178

社区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
) Y( Z+ ?) `* `1 D* [  [! G用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击
- F8 J0 `8 e$ |" B0 g- P
小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈$ w" O! F+ V) G! z
( n4 a8 \& l3 e9 X
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 16:59 , Processed in 0.055844 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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