AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G需要代理IP?⚡️Proxysites.ai⚡️指纹浏览器,就用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户不限额,账单户9Proxy ⚡️ $0.04/IP, 无限带宽 IPCola原生住宅IP⚡️$2.1/条双ISP虚拟卡|PTM星际卡
FB专用虚拟卡Google、Bing官方总代  联盟流量开户fb耐用号0.01一个fb账号官方合作商
FB资源,账单户,分享户,国内一手广告位出租  
查看: 9771|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
1 m7 ?: l! z$ S
% M" o  Z6 U6 J  q, u5 d: \6 {7 \$ {9 b8 a' P3 A+ f3 x
  1. 3 r& Q" W8 Z. j2 Q/ ^! H: m
  2. # -*- coding: utf-8 -*-
      \6 [( T' [1 w4 Y- d* a* Y
  3. 0 b' q0 J/ M; J+ f8 k
  4. from aip import AipOcr
    2 I8 e! n/ Z1 }; X1 d  G! P! V
  5. : Y% {! v% |; @1 T" }) z4 s
  6. from selenium import webdriver/ N: R4 }; X  w- L! t* Q+ ]& [
  7. . f) d2 K6 u  \/ x. P
  8. import time! |" b6 P+ m. g( @% y- f- T
  9. & v7 D  {" Z5 S8 N/ j0 q, W
  10. import random/ a+ C8 i) ^% [' H2 k. h/ ?+ t

  11. # S$ x! j; X/ D# p' t$ `7 _# X
  12. import sys,re* \$ j, N: w; \  ^9 O

  13. : o) G7 c$ v* O/ W5 H7 c5 a
  14. from PIL import Image, ImageDraw,ImageFont
    7 f5 \7 Y* p9 E/ N: k7 ~, E
  15. 7 g$ n% Z: ~3 Z: k; c8 @. k
  16. """ 你的 APPID AK SK """! y& P$ d2 O& {1 h5 r8 T3 B' u
  17. 6 A: R( M3 _9 k; E& ~+ |) w9 s# r
  18. APP_ID = 'xxx'2 {, l2 `6 p- J2 |7 ^! V! d! G1 M
  19. 2 z$ y; h0 e! E+ o- E9 J4 W/ y
  20. API_KEY = 'xxx': J, \+ l+ K5 d: {- C: y; i% N

  21. 7 ~, Y2 L: S1 D; _! j) J5 ^! A
  22. SECRET_KEY = xxx'
    ( ^% K4 I' S% z& ^  s$ d: a
  23. * m! M+ ?4 m- \; N
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)2 x; |" T" K& j) }

  25. ! G6 V- f- Q  a. @( v  A; U0 @
  26. #PROXY = "127.0.0.1:8118"
    , `3 p, \3 g/ ?' j
  27. ' K+ h- a- Q* C5 P
  28. chrome_options = webdriver.ChromeOptions()3 O( `" y( E9 x" q4 O, I/ I! ]
  29. 8 y  [4 }+ j' @7 T
  30. chrome_options.add_argument('--headless')
    , c/ E( T- D9 R. V" D
  31. # w! V" ]: m4 _% Z! K- F( K+ G- n
  32. chrome_options.add_argument('--disable-gpu')+ t9 \1 h( R6 B2 ~
  33. : N' \' E9 \* q+ f0 }
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)
    0 z2 b$ S! A/ b! H+ F; X" I* G2 x
  35. - H5 J/ z  x& `6 G7 ?. D& N
  36. chrome_options.add_argument("--incognito")0 k- O1 d/ V. Y0 x

  37. " U& R8 d8 c( H7 W+ e; w
  38. chrome_options.add_argument('--ignore-certificate-errors')
    ; C0 R4 [0 L( V. z

  39. : m$ }( {& J8 ~3 d3 c$ G* R8 Y
  40. # Win" y! w" l( U6 I. o7 H; N8 I
  41.   ]1 w5 c7 h# \; z: d9 ^. b
  42. # chrome_options.add_argument("--log-level=3")
    2 r; ^# K8 G% Q

  43. ( C9 ]; J2 t& f
  44. # chrome_options.add_argument("--disable-logging")
    . _3 }% Z- Q' B+ b! Y6 J) k0 T
  45. 7 i  q9 o8 {# V" a7 G( I
  46. # chrome_options.add_argument("--disable-logging")
    ! i# T1 n. |" O. \5 z1 L. B4 A
  47. 5 v- p( }3 P5 _* O
  48. #chrome_options.add_argument('--no-sandbox')
    ; g5 X; z5 j* A4 \- q' I) a2 F0 e$ ]0 C2 r( i
  49. 0 Q8 O- m- L. @# T) A- v
  50. """ 读取图片 """
    * Q0 f4 }$ u. {( X0 t7 d

  51. & K" L7 T2 |* G8 C* w
  52. def get_file_content(filePath):1 B3 B! h) N2 R0 Q2 n
  53. . O- E& A. I. d( N! k
  54. with open(filePath, 'rb') as fp:* \0 h/ ^8 ?3 b* c. \: Y3 M
  55. : M, q( A3 l+ V  B) B
  56. return fp.read()& t7 ]5 P! T  s5 E: g% c: g3 H% {
  57. 2 x7 }- s8 b4 F* U
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)  d; J2 V; @2 k5 w
  59. , V2 n/ W* @( s. u3 x6 ?5 i6 C) j
  60. driver.set_window_size(1280, 727)
    2 F* W9 l) R3 R) _0 q. Q5 D1 w
  61. 4 x/ }9 |: B; P& m8 v# C4 m
  62. driver.get("https://youlikehits.com/")
    % `7 `! z) b& [. `' m% Y) u% h

  63. ' N% }6 J8 m7 y4 W0 ]5 V" N
  64. time.sleep(5)5 F& y8 Y4 W' V; D* L
  65. ; z, x3 k5 u1 ], s& w- x
  66. driver.find_element_by_id("username").send_keys('11111') #user0 s. ^& Y" u% u$ h* A* ]  R; P
  67. 9 r: ^8 S' ^! ~3 J$ k8 Z
  68. driver.find_element_by_id("password").send_keys('111111') #password
    # o$ X0 m4 H$ i9 A

  69. 3 `! w1 z6 f; j0 t
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    $ B1 l# K, m& d" i6 E& S1 J

  71. , G  C! N- _" `) H3 o  |, h
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    ) c4 ^/ j: B. M: \2 F  K1 U
  73. 8 ], t1 h% l. W! b
  74. time.sleep(1)% ~/ Y% z# T3 F' C# O8 W8 e
  75. $ p% h- \2 y9 x/ J9 i3 y) n
  76. #Try Again
    , \7 K* B5 L8 {% S- S. J
  77. * c- y5 D& s6 x% H
  78. def checkRefresh(driver):: V6 O  X' z3 ^$ f" D- C
  79. 5 p5 g  K; ]9 W6 C5 K6 P+ k* D; y
  80.         try:! G! B, D- x$ z0 Z0 e3 h

  81. + F) G, ^* k3 f- S# T
  82.                 Refresh = driver.find_element_by_id('loadmore'): d# E# R! p0 ?  B

  83. 8 T; n; m/ A& u3 |: b2 ^
  84.                 Refresh.click()( A- M. X, i) x8 W; V  d3 l# N

  85. : p* j, s) _1 t
  86.                 driver.set_window_size(1280, 727)
    6 `; \9 r/ r+ p) U

  87. 6 m* L! v; T; q( O9 l* K, g
  88.         except Exception as e:
    9 w* W+ g% e$ P$ z! ^

  89. - E0 P* ], y3 m8 _
  90.                 pass
    ) P) {# q; L/ X2 a3 [+ R3 ?
  91. # ]8 U1 K# t4 i+ o
  92. def checkcaptcha(driver):9 Z) o' E  N  z- |
  93. , L3 u+ s7 ]8 d$ x0 W% ^5 [+ T/ {
  94.         try:2 D/ `& R9 M8 J5 O+ ]9 x8 C

  95. 0 J) a+ S7 p4 B3 ?
  96.                 captcha = driver.find_element_by_id('captcha')9 [% |% N. W+ H8 h( X

  97. 3 K, B! l# b9 z9 e3 \' s5 C9 H' P
  98.                 print driver.get_window_size()- h7 K0 _: ^2 v! ?
  99. , Q" y) d. d. _/ m
  100.                 time.sleep(2)
    9 Z+ y% p" N# A$ m8 e" u3 d
  101. ' t  S: e) [6 N9 j+ L
  102.                 driver.save_screenshot('/tmp/screenshot.png')2 D/ g/ V# W9 j' `

  103. : q' M' B! W% q) V7 j6 z# ]: d1 j6 O
  104.                 im = Image.open('/tmp/screenshot.png')
    / Q- ?( n( S, t0 T2 X: @
  105. & T1 z2 w. W8 P3 \# i# a
  106.                 #取消headless模式
      b. n' a. o3 m5 [9 r

  107. 8 l7 R: [" r' M
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)2 b7 Z' X1 O. X& F5 z4 k

  109. . `3 \/ P% b2 t0 F* d, w) k
  110.                
    ) O1 c$ g$ R6 _, l1 K# q

  111. & u4 f+ x' w3 P3 M  k9 Z7 T
  112.                 #开启headless模式
    1 X7 O$ L" L, I, r& Q+ u0 ]: m$ Q

  113. & o# y4 C8 u' l2 \+ H8 N
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS). F, F; O" C" s+ c
  115. # L( ?$ W2 U0 n6 S; ?+ \: A$ U
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    6 p) V% o2 o. N3 i( J
  117. 9 b4 b, Q; b, Y/ S
  118.                 left = element.location['x']2 Q: n* u, n- w

  119. ; }8 `: z, Y+ e! h" q1 z8 @( q5 I
  120.                 top = element.location['y']! K+ Z# `/ u, @" p7 U2 S9 t+ ?
  121. + i7 p" e! n( D; I( n; ~, w
  122.                 right = element.location['x'] + element.size['width']
    ' Q3 j1 I, e) J# i  K2 q
  123. 0 I' d  o8 S" x. `
  124.                 bottom = element.location['y'] + element.size['height']0 k0 P& ?1 J, _7 c( X5 o3 [
  125. 5 ?% A- s+ `- k8 _, z
  126.                
    0 X' H' q, b! u! h3 n& T
  127. " {% e+ o( c9 o1 `1 s5 U
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    . B  g/ e- S4 l0 T
  129. 8 }5 z: D+ S/ O" W# j1 C+ j
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")$ P3 w7 r. C& v  O" W- j' B

  131. 7 i1 o. A! S# V* F2 I  e
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    ; \4 T1 n3 V8 L
  133. , n# |4 V5 y1 @& H
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    - b/ m; D: R* z$ _9 [9 s

  135. ! e2 t! c8 n  M" Y$ ?
  136.                 image = get_file_content('/tmp/screenshot1.png')
    8 m0 d' \( D4 x7 H% m

  137. " t9 a# S3 W: D; ]7 Y
  138.                 a = client.basicGeneral(image)* a9 ]% L3 L( y- ?* n# i) Z; q
  139. * {1 E' I2 |3 L; a! W( d0 @6 o
  140.                 print a
      y& s3 u! E% m0 W$ F9 \+ T
  141. ! _' j' r! Z) h; E" C
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words']); G* J+ G- \& }" p! L; L0 C. Z

  143. " q# s+ D0 _4 W8 [3 Y) t
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)( I3 D) D! C' s
  145. " E2 H: P: t" Q# U
  146.                 yzm = re.sub(r'x',r'*',yzm)
    % r3 E4 [; X% [4 `! G
  147. ) Y* ^. J2 C. K1 I& [1 _
  148.                 yzm = re.sub(r'X',r'*',yzm)
    * R' @+ U0 m: z' Q- t# l

  149. ( g( J" p% R$ V6 N' G6 F8 Y3 A
  150.                 yzm = eval(yzm)
    3 a$ J: w5 c; r# A+ `) z

  151.   x/ Z* {" z7 N; |
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/')), Y$ K) ]+ C" a3 u' c

  153. + A9 G3 j. x0 ]0 w, |7 H
  154.                 print '验证码: ' + str(yzm)
    2 H$ [8 W) t4 `8 Z

  155. , d" ]. k& e  n9 \" U  i
  156.                 driver.find_element_by_name('answer').send_keys(yzm)2 o" [! u" T5 |+ W! I/ n3 O9 G' R% ^

  157. 6 E% r0 d$ B- \- |6 w# g
  158.                 driver.find_element_by_name('submit').click()+ L; @. @! Y5 ?# H2 z5 @

  159. , N9 v+ _& \! a! C: H9 g' t
  160.                 time.sleep(3)1 P' B/ l- l$ X3 Y3 j

  161. & L; _/ Q) B1 n5 B0 d* v
  162.                 return 17 T+ B9 @1 k$ s
  163. 3 i& ?" l6 N) U; R* D" r  u+ K3 Q
  164.         except Exception as e:
    + Y) [4 D' V, d1 V" L  ]

  165. ) D" @3 @# a# }8 c; f
  166.                 return 0
    ( s! h! c. m1 f0 j3 N; e9 ?
  167. 6 _+ K  I& B3 c
  168. def followbutton(driver):# S7 e/ F5 H( s& b7 z

  169. 6 ?, \8 I3 I( M( z
  170.         try:% x9 w( l+ p( ]. g3 U2 ?

  171. 8 j+ F( q5 E" t% A& x
  172.                 driver.switch_to_window(driver.window_handles[0])% J! e  H+ B* C0 ^- n' q2 s

  173. 7 d, }' W4 y% @6 b- d
  174.                 points = driver.find_element_by_id("currentpoints").text
    % T: M1 V0 F7 O' e* B
  175. 0 b% G7 I! x# v' x* F' ^4 Q
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    ' p( E" M% p/ m4 H% I

  177. ) x; E, _- J8 h2 c/ o
  178.                 driver.switch_to_window(driver.window_handles[1])$ i$ u9 h# U( T; U2 K

  179. . R( @; s" O* f' o& B0 f
  180.                 VideoSource = ''.join(driver.page_source.split())4 V- K% B0 P$ G6 a; x5 h9 F

  181. + M3 m- A) l* r! x1 k5 \
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    - D+ u' ^# r$ }  f$ r  {, \# r
  183. ( n; m; J  l8 n* Y
  184.                         print VideoSource
    & K- ]( j1 I+ B9 x( f6 h
  185. % E- I  T4 |% W% j7 C' A- q1 E, c
  186.                         driver.switch_to_window(driver.window_handles[0])
    " a0 y, Y% N- ~0 r, j6 i

  187. ; E9 f3 c8 U5 q! ^; |: D) R; A
  188.                         print "Refresh..."
    , [6 T) i+ k( H; n6 l5 f1 h  c

  189. 1 @" X+ S9 w: c, \3 e
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    * I4 h9 s; z: S7 @$ d

  191. 2 X6 l+ h+ @5 x5 L/ z
  192.                         time.sleep(1). n' C. `3 G, B6 W$ n1 s+ t
  193. & U2 G9 S' U7 t9 J' `& Q! L$ G0 Z3 r
  194.                 return points/ `* ?0 h$ s$ |- _$ j

  195. , u! Q0 ~) D7 n1 u2 T7 `
  196.         except Exception as e:( q) n5 H4 c8 c9 J4 H  M' ~
  197. ! W! I, a6 K3 @& s9 q
  198.                 return 09 A4 X6 |. d& t4 A- I  n6 I
  199. / R# @+ Z1 r# f6 A+ X8 H
  200. for i in range(0,5000):& }6 G) c$ k0 \7 K* k

  201. / D% V) m8 `, R6 Z
  202.         try:
    ! S: ~( d+ A7 [; R( c, S
  203. - `, K4 t8 C8 y2 n
  204.                 captcha = checkcaptcha(driver)6 D3 z0 s% g" L; @
  205. - {( a3 A5 p& q4 z$ @4 k
  206.                 time.sleep(1)3 X5 {* r# y$ N0 {

  207. - y; y( u: X% g( [5 A" H+ f2 D% l8 C
  208.                 checkRefresh(driver)! b% T; {* ~. J
  209. . g6 O5 f: B8 A- e- b6 s5 X
  210.                 points = followbutton(driver)
    3 |' Q0 b/ o/ @1 }5 D; [3 L

  211. 0 w* x# g# {! J) U2 G5 T- u& i0 z
  212.                 time.sleep(65)
    % P+ X& O( T7 i2 [' n

  213. ) _1 [% _. L+ b! A" Y2 k
  214.                 driver.switch_to_window(driver.window_handles[0])
    6 A! w6 h# m+ R' R8 p: p
  215. + h: ~) \6 }5 l" ]* _! ^
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
      Y; f% u2 d, q7 |9 g2 G

  217. - i4 E8 ~- G2 ^
  218.                 print "points: " + str(tmpp)
      X5 A* R, C' |$ Q% {8 t

  219. * m0 I3 n* Z8 C: W' z
  220.                 if points == tmpp:! T% V2 n, [5 |4 f

  221. ) z! x* |" B0 g( o
  222.                         print "Refresh...". u& u$ w3 t; \7 Q* {
  223. ) l6 ?7 Z) b6 L$ ?4 q) ^
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    . Z' A( G* ]* \2 o
  225. : {$ k8 e+ M% n' k5 M, U* W
  226.                         time.sleep(5)
    ! M5 V. j% T0 w7 p! ?

  227. ' S) y3 G9 `) S4 |) e2 }4 m
  228.         except Exception as e:' ^0 f1 m) [1 a

  229.   ~5 p  M7 r, X% c. ?
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")- x% z/ l: z; c0 r. U" a9 L# R
  231. 4 V  I3 I+ ~1 Q
  232.                 print 'error: ' + str(e)
    % I. g7 g7 _! ]8 f8 p+ c1 p
  233. 0 m6 T* |; J: K
  234. driver.quit()
    7 ]  {; ]( a' w
复制代码

  C9 I9 f0 L' Y) `. ~/ {3 B$ N; g9 N! i7 P; }

. P  B: ^1 k! c, ?* K" ] 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 ) {9 F5 @5 k8 A$ Z; }* W

' Y/ b1 B2 e  f: _

评分

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

主题

167

广告币

248

积分

初级会员

Rank: 2

积分
248

社区QQ达人

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

使用道具 举报

9

主题

984

广告币

1481

积分

高级会员

Rank: 4

积分
1481

社区QQ达人

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

使用道具 举报

176

主题

1070

广告币

4126

积分

超级版主

Rank: 8Rank: 8

积分
4126

社区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:113 n2 Z" f, d2 H9 E( j& k( j- W
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

& I" x( n0 C9 ~% d小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
+ a% o4 J2 z+ {' o; x* c6 R1 x; j- P) T: x  ~! L8 D* _: ~8 E4 I
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 21:52 , Processed in 0.046843 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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