AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Lemft
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 ' Z3 T  O5 h# f( W( g% l/ a
) f# w/ |' H2 s: L: L0 f2 j

" k+ \" N2 m2 Y, t6 ?
  1. " d3 N- t4 Z, H+ g0 F
  2. # -*- coding: utf-8 -*-# @8 ]$ K& `- s

  3. . [" ~+ ^) P2 J( _# l# h- @
  4. from aip import AipOcr
    & V3 {) _6 a' V

  5. 2 E# I) H4 e' x! g2 S4 W9 P, J
  6. from selenium import webdriver
    ! u, q: V4 N+ A& V& ]

  7. $ @" z; a4 C  {; t
  8. import time
    1 J0 J) T) E  g+ @; K/ {7 x5 r

  9. 2 V0 s. _4 H! n, E6 d
  10. import random
    & c) W  ~6 h/ c$ W
  11. ( O( }: d" k8 D2 ^5 J1 `# u  y" }! j
  12. import sys,re
    . J# y/ [: u# X7 _# F
  13. , c8 Q* j" e  `8 x
  14. from PIL import Image, ImageDraw,ImageFont
    4 {7 p7 ~/ z% a( o8 O2 B3 B+ k
  15. 0 G* G$ R: G% M4 E
  16. """ 你的 APPID AK SK """
    " l- g4 l5 r8 W( F% I+ v
  17. ! u7 [5 Q- g; T( j) N& i
  18. APP_ID = 'xxx'
    9 D* v& l/ G4 A) k9 L. L- S7 F

  19. $ x, o0 ]6 j  t! d9 j. q2 v& d4 I
  20. API_KEY = 'xxx', B  V( i( w' E" Z, s& g! }
  21. $ f+ s. R2 Z% ]1 m: D" R0 l' S" s
  22. SECRET_KEY = xxx'
    ! w8 u! D3 |) a! D7 Z, v6 _

  23. ; o9 T, b; f2 w- D
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)* n, H/ w9 X0 c6 j

  25. " I+ N/ ?0 @; n8 O+ |1 p( B, ?
  26. #PROXY = "127.0.0.1:8118"
    3 v+ L( e! J8 W' i* F# |! J+ k+ s
  27. - ]4 I$ h  q# }: [$ W
  28. chrome_options = webdriver.ChromeOptions()# l8 |9 \1 g& o& b

  29. + \7 M# Z, H; n; B+ M
  30. chrome_options.add_argument('--headless')
    - O- J2 k7 [9 ?) Q" e  i) T
  31. / B1 N+ [! ~5 j7 X" p/ d
  32. chrome_options.add_argument('--disable-gpu')
    ; |/ U/ [* G! B9 B% {2 K
  33. : c) }0 H) `& V) ?
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)" w3 Y. t( c: j' T' i9 r) T
  35. 0 a: l5 b4 F  E* _
  36. chrome_options.add_argument("--incognito"). N( A% K0 g% t
  37. , Q4 x" X7 g+ S/ G0 X6 s
  38. chrome_options.add_argument('--ignore-certificate-errors')
    / }2 k, E' \6 J9 T" ^

  39. 1 X& }6 a/ d' M- F7 T: P+ l
  40. # Win' n4 ~; C$ O% \1 V* w) E
  41. / j1 n" }! T8 ?) g" \/ p0 r6 `
  42. # chrome_options.add_argument("--log-level=3")+ C# }: D' x# I+ B9 t

  43. / [7 U8 k6 R. L
  44. # chrome_options.add_argument("--disable-logging")
    & d7 e  W$ V! _  ^- ]1 R7 L' x; N
  45. - P% f% M. q" H5 u
  46. # chrome_options.add_argument("--disable-logging")
    / H. N5 L0 J7 [5 ?' Z

  47. 3 h) w1 n7 `& y8 ^( \
  48. #chrome_options.add_argument('--no-sandbox')
    , H$ i( o6 ^! X8 o$ D) y

  49. $ g# g6 [' Z" l  K5 |
  50. """ 读取图片 """0 y: a* ?4 K. [' V  v* t' {1 \! |. R
  51. ) N+ ~3 Z$ @# F
  52. def get_file_content(filePath):
    % R  ~3 `( p# m

  53. / g2 A' [0 ?, O2 e! w. L( L
  54. with open(filePath, 'rb') as fp:9 g' _$ H) [+ D2 Q
  55. * H+ r) s: o% @7 c6 i! r# X
  56. return fp.read()# \: h& `+ z- [) Z9 o; X! c
  57. 5 X3 N& P8 ~2 R% D3 q) p! `; c
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    " Y" M: j. J4 r  r  G! S5 e# B

  59. / Q* ~1 i6 _% g6 r9 {2 G* p
  60. driver.set_window_size(1280, 727)6 _7 E  ]8 [1 s( R
  61. ( T) j* h3 g& Z% P) `
  62. driver.get("https://youlikehits.com/")
    7 }# Z4 Y( Q6 b! D3 Y: h

  63. 5 [1 T$ I3 C+ b
  64. time.sleep(5)
    " g, S; b& N9 }
  65. 7 F/ f; W2 c; q3 G" D
  66. driver.find_element_by_id("username").send_keys('11111') #user
    - l; u4 q; s! o+ L* g
  67. + A- T! @! z5 c' U& p" {
  68. driver.find_element_by_id("password").send_keys('111111') #password' O. c/ A# I( c' E2 d, X0 S/ E
  69. . D8 }2 _; ]* [2 {8 u
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    ; i4 t: W& [7 F$ q, U

  71. 9 R% g4 \* l/ X. h
  72. driver.get("https://youlikehits.com/youtubenew2.php")# T! v8 j$ c) L) D! r; l. n3 g  P' o
  73. " C3 B3 X2 s; d- B. L: i
  74. time.sleep(1)( ?- \( w. Y3 P: J  o! F

  75. ' Y  C7 G; ]$ u& y) K
  76. #Try Again7 C1 S  J' X3 ^- n
  77. 2 P; S) |( w# q8 p& Z2 \( r
  78. def checkRefresh(driver):
    # S& l/ ^& M' ~: r( ^# t
  79. ; U) E. K- Z8 w3 L# t7 w( Z; ~* T! f
  80.         try:
    . G6 j$ B6 `* l* ^, _: i
  81. 3 B2 m; B2 W% l1 i( J  w" c& |) r
  82.                 Refresh = driver.find_element_by_id('loadmore')
    % p3 H7 f' m4 [( ^+ ~

  83. & b/ Y: b5 W0 s4 N- |( Y
  84.                 Refresh.click()
    / |7 R2 P$ j8 f  P

  85. , \' [' I3 ~6 O0 ?" m, _
  86.                 driver.set_window_size(1280, 727)& s6 z0 w! D0 J

  87. ( |4 I- i4 t# Z% W
  88.         except Exception as e:& F' J" Z0 g( t8 o
  89. 0 b& Q$ ~# n" E1 ~3 z. k  f0 ]) l/ O
  90.                 pass
    1 @6 w' B1 }0 Z0 z4 b6 J0 G4 \

  91. 4 ^0 {0 f. o+ u) @9 p/ M
  92. def checkcaptcha(driver):
    # S0 B7 A: A3 E- {+ S
  93. . ]. X% X; R# B! [% @) r3 B7 N- w
  94.         try:
    " k* u* \! p' w( l5 S1 q
  95. 4 v' W; ^! |9 ^7 H9 {/ e  u- x  ]
  96.                 captcha = driver.find_element_by_id('captcha')
    & s& r% I7 a  `! E* f" s6 C

  97. ( \7 g: T' l( H8 R$ M& p
  98.                 print driver.get_window_size()5 `" n1 H9 u. O5 ~7 z5 J3 Q; M" i) b' o

  99. ) ]) @6 Z9 g8 K4 `7 n* A/ J
  100.                 time.sleep(2)- V; C+ e# a1 \6 u+ i* B

  101.   R1 L/ t' q! `! {5 z: G
  102.                 driver.save_screenshot('/tmp/screenshot.png')( \" U; ?  x1 X' C5 Z# p1 {! k4 v
  103. ; K5 ~) _5 ^) w* A6 {8 M3 I2 d
  104.                 im = Image.open('/tmp/screenshot.png')- L7 _: [2 q; H; L) K

  105. 2 G: s1 [: ]: Z; r0 e% [
  106.                 #取消headless模式
    6 t+ }, z1 E0 K" r* m! N- ]
  107. : H5 S# b* \4 w$ h9 c0 B; l5 a
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)7 S* w+ @' s# K9 w" @
  109. " E: _! C/ K. V" p
  110.                 9 O- W) G$ N, A  e9 Z9 B, w

  111.   p0 R9 ]% b& Q! L! b
  112.                 #开启headless模式3 H% @3 \, F; w' w; J
  113. + e) Z( W) s3 M* ?3 u. \3 k& \
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)
    " {( F, x8 q8 [2 a3 }

  115. . }- P* E" ~# g0 R% g
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
      X& V# {  S0 H& _' f

  117. 2 [. n9 y3 K" X! E2 w8 S
  118.                 left = element.location['x']
    + u! f6 |5 p, ^; }) k
  119. 0 T& u+ M8 g+ c; L5 W
  120.                 top = element.location['y']
    5 u* C4 b( W: U; a' e5 R

  121. 8 _( O8 O1 n: {, \: i" c3 ]; F; m
  122.                 right = element.location['x'] + element.size['width']
      o! X0 U9 O; ^
  123. 1 w* b- n2 @) L
  124.                 bottom = element.location['y'] + element.size['height']
    - M- X1 [! \8 G! ~
  125. 2 Z! R- X/ W% H; D6 y9 X
  126.                 4 T0 K. d# U: B

  127. ) o2 L5 j& V( n- x
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")$ y8 T& k4 Y( Q* p8 |; D
  129. * L, M. n4 o! }/ ^8 H9 K. K0 V
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
      p8 n/ X# G4 E' V/ g+ Y

  131. $ f9 ]  i- P& W: d- B8 E0 I# i
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")+ t: D; L) }; R" F9 D# @

  133. 7 {6 p" w7 s8 m" k
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    , {! G% q5 L. f

  135. ' h3 R5 b! O, O
  136.                 image = get_file_content('/tmp/screenshot1.png')1 `0 j: o# V3 `5 }- N' K
  137. 9 _; m! v, v9 S0 l# e$ U  N+ Y
  138.                 a = client.basicGeneral(image)7 h8 V* l, F% B8 }, i
  139. 2 ^4 A. ~$ d5 [# s
  140.                 print a
    / I3 X2 f) f3 W. l2 Z
  141. 3 U7 w; N" Z) M+ P1 s! \! b1 j0 s. n
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words']). G7 v1 ]8 S# Y  ]) S' z$ M# Z

  143. ; ~& |* l% s# p
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    / N- Z# {( b9 z) I

  145. - b9 |, |/ n( }1 n5 d8 }8 W  A, D
  146.                 yzm = re.sub(r'x',r'*',yzm)" \, c9 w5 l' n; z* k

  147. $ _0 @% ]2 @- e: u/ p$ k
  148.                 yzm = re.sub(r'X',r'*',yzm)& E2 t9 y7 L. z8 g7 J% u# k- L

  149. : R! \! ?4 q5 P, f: ~4 F" R
  150.                 yzm = eval(yzm)
    / ]  v0 e( ?* M

  151. " @5 a, v6 o0 G6 t' x% ]
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))' m- ?( t5 X# G

  153. : U+ v9 E2 _" K. Q: ~
  154.                 print '验证码: ' + str(yzm)  o% I( z% c1 W. L  m

  155. ; [- }3 Y" z  H8 c0 X$ M2 {- k
  156.                 driver.find_element_by_name('answer').send_keys(yzm)& r2 ]/ E3 O8 k3 d

  157. 2 s4 ^5 ]( F. m7 f5 t' G. g2 I2 H: r
  158.                 driver.find_element_by_name('submit').click()
    0 x1 X1 l, N% A! ?( F
  159. 0 h" V/ \3 G0 r3 k. l
  160.                 time.sleep(3)$ t$ E, z9 l' n5 T/ h! I) h/ I

  161. + e8 j. \5 v! S" x+ r0 l" h) u
  162.                 return 1
    - ^6 T3 j3 j" x7 M* J! z3 Z+ L
  163. 8 x$ F9 F' o. d3 v5 ~9 I
  164.         except Exception as e:
    8 L7 {' x0 f4 c
  165. ; e$ r, N' l. w4 j
  166.                 return 0
    * r& d8 \/ }  p% w/ v

  167. / p$ s6 y" x3 R$ X4 K+ W3 C' H
  168. def followbutton(driver):& s0 w) t3 e3 t6 o0 h  ~, _4 x! m
  169. 7 f% y* Q( J- k2 T+ K
  170.         try:2 C- f% V0 H. ~) g0 \
  171. 3 K+ K" {$ u! f; V5 v& e4 j% |! f9 e
  172.                 driver.switch_to_window(driver.window_handles[0])
    4 z/ f, @- w& s/ _
  173. ' s% G2 {4 [8 f4 z2 W/ i
  174.                 points = driver.find_element_by_id("currentpoints").text
    ( z0 T3 Z! T: ~7 I: e
  175. * }# R2 s* e( `: [( v
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
      n# D- {) Q, d
  177. & p, r* W; r) a2 K/ _  i% m
  178.                 driver.switch_to_window(driver.window_handles[1])
    4 ~$ D  K2 l! O2 {
  179. + n0 s+ G1 S, [) @" P! F2 [+ e
  180.                 VideoSource = ''.join(driver.page_source.split())
    3 t+ m$ z* y" U) r% ~. o
  181. % K& r  K1 S8 Z0 q
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:$ N  x2 F2 A/ C6 R6 K9 c
  183. * z/ b+ I" ?  Z% R# ^
  184.                         print VideoSource  g+ d1 t6 m; z0 x! U- ~

  185. 7 l8 x( T& }4 J* W8 m7 C5 W  b
  186.                         driver.switch_to_window(driver.window_handles[0])
    4 y, h5 c' Q( p
  187. ! c- F  t2 c6 z0 N
  188.                         print "Refresh..."6 [: {% Q* n/ ?) t4 S

  189. * {9 E5 n1 j$ e( d+ q
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")8 y- _, I  I- f# ~. V

  191. : w  n" [" ]% N5 ~# k4 N
  192.                         time.sleep(1)
    ! T' r9 i  x3 M2 L7 n

  193. ) C/ \! K5 }. q. h
  194.                 return points
    : C/ S- \2 |8 L4 v  X

  195. " _$ `" O% V" C* f( n' N0 X
  196.         except Exception as e:. N2 G$ h1 H0 I6 f) T

  197. ! ~9 P) {! O& u* ]
  198.                 return 0: o$ x* \  c( F* v! h, z

  199. 9 h( z5 z0 K0 z' }
  200. for i in range(0,5000):
    " V  Y) s6 c# Q7 h
  201. - j$ H$ c7 C" v: W
  202.         try:6 N) t0 P4 @2 h6 t' Y* ]; z: h; I' A
  203. ; Q( \6 W+ I$ w: d' z$ z3 C
  204.                 captcha = checkcaptcha(driver)1 s+ i" X5 h! c  ]. b/ H1 T# T

  205. * C/ \1 e, b4 t  X9 A$ E$ a; I& j
  206.                 time.sleep(1)
    * ]! ?% J) Y3 X9 v& \# \

  207. : t& [6 X& k- D" ~! ]1 g
  208.                 checkRefresh(driver)1 J$ G; W+ r* R! z

  209. ) ~. P3 N% z- C7 Y7 R
  210.                 points = followbutton(driver)
    ; x8 z, [& p# ^
  211. & Y; |* X7 e7 T/ z3 p
  212.                 time.sleep(65)
    4 P6 h" R4 c4 W7 V% g8 O  Y

  213. : ^$ }3 W+ G: B& q5 \- \. w, R
  214.                 driver.switch_to_window(driver.window_handles[0])
    % v# }# o) N4 |+ z% e
  215. 0 ~: L. o* r, o0 C/ G, i
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    7 x" c6 C6 j1 I

  217. 4 H, C* x3 j; h$ Z; X4 P
  218.                 print "points: " + str(tmpp)
    . K" T4 R& u# C! g
  219. ! @& ~* s  S4 g5 \
  220.                 if points == tmpp:; v" F- e. L: \. ^" [, z# a
  221. : p, I3 u4 X, B  R/ k5 W) a
  222.                         print "Refresh..."
    " f$ [( ~* _9 O5 A
  223. , `) v' s+ E  t  `
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    : z. \; g* V+ B+ I, {5 u8 C/ Q8 z

  225. ! W9 T4 I. u& B
  226.                         time.sleep(5)
    6 ~4 C8 P; i, z* }1 ^3 h( J4 o

  227. 5 p, d- M7 j* P7 `- e+ V
  228.         except Exception as e:
    : E  L3 H6 f# k! t* ?
  229. 1 X$ A  Z3 N* z7 |& b
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")* f+ S7 [. N  I3 e
  231. & C+ ?5 }1 [# V! w7 D
  232.                 print 'error: ' + str(e)) Q8 ]' Q2 {1 `' U3 t$ _

  233. ( ~* e) o, m2 B+ W% F
  234. driver.quit()3 S- T& b4 M1 b: D" B3 g
复制代码
  t  Y4 g$ Y9 V, ?6 G  N( d9 \' U
/ d6 f5 u. l7 H% r, s  \

- M( e! G  b6 f% Z1 w 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
+ k( k2 E: h. u- c6 K; M
6 q8 d( N6 y: z, e/ {) q0 W. n7 W

评分

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

主题

988

广告币

1484

积分

高级会员

Rank: 4

积分
1484

社区QQ达人

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

使用道具 举报

176

主题

1129

广告币

4189

积分

超级版主

Rank: 8Rank: 8

积分
4189

社区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( K" C  U1 ?6 d
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击
; a3 [: W. a& l5 b& m* u) R; C( M
小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈# w0 [4 B1 N- ^  g0 \7 T
! E4 x* t( X' d" U  p  I
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-1 16:10 , Processed in 0.049678 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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