AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+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开户代投/三不限/白名单广告位出租 
查看: 9444|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
( t7 u5 t4 X6 q$ Q  o# F
0 \- [- {4 v, h% @+ H- f7 Y3 X# {! `/ V1 ~
  1. . T# I/ P% H! M+ n: t4 j# X+ Z# G
  2. # -*- coding: utf-8 -*-: \+ c- ~+ t+ A. ]1 l$ }- ^' Z. X
  3. / L) m& M1 T% o$ ^/ C) A
  4. from aip import AipOcr2 {/ t: Q0 H" \$ r
  5. " g) U# D* X: \: X/ b" `
  6. from selenium import webdriver& y7 v! R8 V, f) ~
  7. + E' g+ K' r, ~9 \+ v3 }+ j) [
  8. import time  Y* |- V9 g5 b2 Y; g
  9. ) Q2 o, H9 t$ ~0 ]5 W% B
  10. import random, K) O6 \: I: [- E/ o* X

  11. 9 l& ]; l7 j3 Y4 F# O
  12. import sys,re2 E9 X# y! e9 \2 |: x
  13. 8 |$ a9 X6 W( U
  14. from PIL import Image, ImageDraw,ImageFont
    5 w6 q; P3 r3 V  K

  15. - N" k4 _" O9 U- k( V! a; h% }
  16. """ 你的 APPID AK SK """
    : _* J; a) ~, E, w0 I
  17. $ ]9 I  {5 s$ W9 S* u2 l
  18. APP_ID = 'xxx'8 S' I9 o1 F. J4 u. Y
  19. # i1 N! R9 w, @* B
  20. API_KEY = 'xxx'
    3 x9 F0 r6 O3 M' V$ S) q
  21. $ T( j. w, z5 `8 i% |+ J5 _4 j
  22. SECRET_KEY = xxx'8 s( f) F4 T- ^# T( Q2 Y5 N
  23. 7 D: D# g! E9 T" A: e7 S. Y
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)6 r: N/ D6 d2 ^, `+ j
  25. ' |4 ~2 t! X  s8 r( A; ^
  26. #PROXY = "127.0.0.1:8118"
    8 w3 J# D) b4 D( p3 [
  27. 3 l% p" z9 |  N# L
  28. chrome_options = webdriver.ChromeOptions()
    # x8 ]! b6 ~5 N! B$ e; \
  29. / x$ t+ D+ I7 V5 q5 F# X5 H
  30. chrome_options.add_argument('--headless')! |$ O9 F' b8 e7 y

  31. : o" T2 h7 [0 H
  32. chrome_options.add_argument('--disable-gpu')
    0 r; @7 g5 ^6 @+ C
  33. ' _1 L4 d" ?. r- Y* I: a
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)& ]  D3 i5 ^' Y" Y) ]

  35. 8 F$ O& W' t9 Q4 o
  36. chrome_options.add_argument("--incognito"), j0 F5 E' {3 J; V3 P: P
  37. 4 a2 J4 H8 c$ J1 ^  H7 N
  38. chrome_options.add_argument('--ignore-certificate-errors')
    3 f9 o2 [6 m5 G3 E/ s. K
  39. 1 ~6 T/ d6 Z+ Q
  40. # Win6 _4 i) C( p. T  g  t. V) Q
  41. ; c  w0 y1 D$ u" u2 m
  42. # chrome_options.add_argument("--log-level=3")3 o2 ^/ B/ k4 x- I3 t2 y( o' r
  43. 4 \" X6 d5 E, ?2 g( q8 @
  44. # chrome_options.add_argument("--disable-logging")
    , n; H( L4 P( ~- I/ A! \

  45. $ Z4 D8 {6 n2 K! I
  46. # chrome_options.add_argument("--disable-logging")
    + e0 \1 t$ ]* y" H7 Z& Y! r
  47. # I+ q! r4 {% m8 v7 E+ P
  48. #chrome_options.add_argument('--no-sandbox')4 P- k' R7 O2 s! ~; t
  49. + H+ P8 u- b% L$ P) }% L
  50. """ 读取图片 """
    5 G9 r/ g) _( z6 v

  51. . h) ?1 O; G( B# G. k4 g* R  ]4 _. s
  52. def get_file_content(filePath):
    " L( m$ H. O9 T" @; n3 n5 a0 {9 J

  53. + d/ e$ _! y1 g3 I
  54. with open(filePath, 'rb') as fp:
    0 }% K- b0 M1 B) k# o+ p. C
  55. 0 _) x/ y: [3 ^' @
  56. return fp.read()" y* j, X$ j/ a' f% Y& ^9 q

  57. & V  {/ A% U1 C/ Y: F9 ?
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    ' Y6 ]9 c  @  t- l. H
  59. " }4 G2 N" C# Z; Q0 T. N! E- z
  60. driver.set_window_size(1280, 727)
      j' C* y( O* C4 m" q
  61. " g7 Q8 e6 c3 q2 n3 j# f8 `4 E
  62. driver.get("https://youlikehits.com/")" j$ F# V8 W' y" V, W+ T. }0 [
  63. 7 Z# j2 n5 D  C! b% ?/ u9 n
  64. time.sleep(5)4 z) \- F; U4 C
  65. , X! w+ D9 D* E! i1 N
  66. driver.find_element_by_id("username").send_keys('11111') #user& ?) [) i" B/ E, _
  67. & L. f  k% O: _& @/ g
  68. driver.find_element_by_id("password").send_keys('111111') #password' @4 ?. X# `% f4 p8 G- Y4 x

  69. ' [" m& h1 M0 \0 t
  70. driver.find_element_by_xpath("//input[@value='Login']").click()
    ! U0 P, h4 q, `6 B

  71. ; B# |8 P0 Z/ }" Y, v6 E
  72. driver.get("https://youlikehits.com/youtubenew2.php"); v/ S9 R3 }% X9 c
  73. ' f' c  {6 L) ^. k) I
  74. time.sleep(1)
    8 ~6 S' u) U: t/ E1 H

  75. " f- f% F. d0 g/ O
  76. #Try Again
    0 t7 X; [- k1 u" V9 \; J

  77. 1 M8 R0 c0 l& h- {2 n
  78. def checkRefresh(driver):0 N5 \' P8 E. c; `( w: R: P9 P, f

  79. 5 w& d, e; i8 d
  80.         try:
    0 V- H4 d, p. G. R. R, C

  81. + @/ `; k" Z4 f) K8 m
  82.                 Refresh = driver.find_element_by_id('loadmore')  u; b$ N! {0 p8 {0 s" ~+ x

  83. 4 C0 Y) p( E0 S$ v+ Z" Z4 y3 H
  84.                 Refresh.click()) b$ q3 q  h9 a1 I, y
  85. , e8 P& o  s  K8 E: e/ X
  86.                 driver.set_window_size(1280, 727)3 ^5 P1 G. p& R! x! r- j
  87. " D( K/ @# U5 Q$ A$ b# @! D
  88.         except Exception as e:+ p- @% y% S. ]8 a' e
  89. 6 v0 P& F5 ^$ F" c! C
  90.                 pass
    * b- Y# @0 M- ]2 ?2 {

  91. 0 g8 q8 j4 h8 g4 m
  92. def checkcaptcha(driver):, P  a; m- C/ j/ J$ I& \

  93. - j$ C+ x4 m$ ?1 u+ I
  94.         try:. Z1 N6 A+ e$ A0 _+ j8 t6 J

  95. - J1 X% O. r/ H/ i% J- @/ l
  96.                 captcha = driver.find_element_by_id('captcha')
    - x) ^; \! m+ E9 c% @0 ?! ]

  97. ) W: B- p: T5 [& }
  98.                 print driver.get_window_size()7 X+ B0 c- p; o* A1 S
  99. / Q: [! |3 c# V7 U! W2 i4 k
  100.                 time.sleep(2)0 t0 p: p% {" [

  101. 7 p- t+ c5 U% k  a# ~0 I: Q5 W
  102.                 driver.save_screenshot('/tmp/screenshot.png')! b7 R- N% w( d. d% h
  103. , z7 h6 G! h; }, j  s
  104.                 im = Image.open('/tmp/screenshot.png')
    4 w, b( L2 q% i1 i' G( k- b; g# e
  105. 5 y1 C# }0 S" u9 z
  106.                 #取消headless模式
    / _! \; c4 V: Z/ y' h
  107. 0 Q! R, m8 s% }% o
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)6 J: U2 |4 T8 A; Y! p3 y
  109. 1 q$ G# D, K9 M/ U% U
  110.                
    9 ^% H9 D4 k# T) \
  111. ) K6 y, \: s5 }
  112.                 #开启headless模式
    5 p9 m: k" @9 F# i" t9 m
  113. ! m3 J- K) b' y- s. f1 _
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)* f' ^9 M% S  O5 {8 U) y

  115. % n' X6 [9 U& k
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    9 P6 ~; p1 ^8 k" T

  117. 7 }* z. \2 q! F, N
  118.                 left = element.location['x']
    6 X- y" W' y) V: y* H7 ^( }/ g4 I9 K

  119. 1 @/ i5 k) W! k1 p' `
  120.                 top = element.location['y']: O9 Q/ B, o8 f" ?( j

  121. : c5 }+ h, i% q) b# F
  122.                 right = element.location['x'] + element.size['width']
    : H. v/ p6 ]! s+ q( p

  123. / g' v/ K  ?' r! M* U' G
  124.                 bottom = element.location['y'] + element.size['height']! X! I$ R: E* n* r0 I6 i7 r. [

  125. # f- _5 L4 s4 B6 l7 e/ d* \0 t
  126.                
    6 c( J- O( o+ N7 U" @1 k+ O
  127. / X# p5 O/ y4 y* V
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    ) A; a, K3 o: v9 T
  129. + h4 p6 W4 d4 z' R
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    . D, c! Y! |7 ?3 g: F

  131. 6 i1 M( l' t8 h" P& _% z
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")5 ^5 V, w8 c; l2 Y

  133. # x  `2 a( h. u6 v
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
      d4 h; r, y/ o, s
  135. 5 D" {7 [$ Q( S  L) b& M
  136.                 image = get_file_content('/tmp/screenshot1.png')7 X0 X6 `0 S! q" \0 \! A) P( r
  137. + O$ Z( i: {3 t# m( C' O4 E, o
  138.                 a = client.basicGeneral(image)) k1 o9 \& e; `2 a6 `% M

  139. - |4 G- L; ]: x& [; H0 G
  140.                 print a% W, r3 T1 U& u0 H: M8 t

  141. - d6 }% g' D0 x& W5 A" R& d# C6 o
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])2 ?0 f6 I( q: q
  143. * A0 j  E7 @3 Q/ B& J/ G
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)2 n9 w6 i! A- }2 ~4 c6 V& P, n' `
  145. , A7 |' }9 x, q% m
  146.                 yzm = re.sub(r'x',r'*',yzm)
    + Z4 x0 I( J) C; C  Z" \% y3 j
  147. 2 P3 M1 {9 _! o
  148.                 yzm = re.sub(r'X',r'*',yzm)
    " I! _/ \9 _1 J( m* q
  149. ( m) @  @% M/ i1 C6 n  D
  150.                 yzm = eval(yzm)
    ! Y& I: j4 B) a' V! l
  151. : N0 K9 E! s! v3 O7 Y) z
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/')); \  n' j5 \0 Y, X) _

  153. 2 N' S" h2 P$ Z; A' G7 o
  154.                 print '验证码: ' + str(yzm)
    . B6 ]/ s( |5 f) |1 A

  155.   c2 Q' a# {8 y) @& ?
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    ! h% O0 w4 i5 R5 P4 |+ v8 n% A/ F
  157. 5 v- `. Y" z4 z8 a; H# o3 P
  158.                 driver.find_element_by_name('submit').click()6 X5 @2 [( s% U3 x. q: B: K9 k0 q
  159. 9 j" F1 c6 Q2 H
  160.                 time.sleep(3)& v4 t7 P0 v0 @! I5 c7 b3 j& D

  161. 8 l( ^( G6 w' l6 u
  162.                 return 1
    0 ^$ K1 N; c7 F8 O) b( U: R9 s8 l

  163. 4 E, i  j" r6 ^% O* M4 W
  164.         except Exception as e:; M# G% K; B5 _' U4 H* J; E: m
  165. & j/ Z+ \5 B4 V* r
  166.                 return 0# j- }" [5 d5 w* c  U( O" `4 p
  167. : ^1 a5 f( U+ N& z3 i2 k
  168. def followbutton(driver):
    & @3 A: G; M, t6 n/ n. x

  169. 3 }, T6 A1 R% ?# L0 ]( ]
  170.         try:
    4 j) U4 P  [1 D5 c& ]2 @

  171. * {* Y9 Q' A5 Y7 |
  172.                 driver.switch_to_window(driver.window_handles[0])
    , T5 ~0 v, W' n& C

  173. + }" W5 B  q3 A
  174.                 points = driver.find_element_by_id("currentpoints").text
    " P, L" G1 x# n3 j; {7 Z* [) x% G8 L
  175. & |2 `* T2 ^  C* p! n+ D+ a$ f
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    ! |$ z0 F9 e% m+ |

  177. ! D- f8 @! K/ C' @2 y0 ]
  178.                 driver.switch_to_window(driver.window_handles[1])
    $ A4 m, n1 N  C1 G! r+ Y5 n# X2 t/ q
  179. 4 d3 K" z, O2 Z6 s( D
  180.                 VideoSource = ''.join(driver.page_source.split())! o/ d. d4 [8 E! v- C$ C

  181. & g* K- w7 q& [0 ]! |4 v0 O
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    # ~4 s2 m! K! ^7 z5 n( t8 e
  183. # \/ e8 w6 ^7 u, a6 `9 _4 k& X
  184.                         print VideoSource4 s9 w3 s" i8 c3 `, s, I* ^
  185. # Y' X7 ]. k+ g) z% m' }
  186.                         driver.switch_to_window(driver.window_handles[0])* D5 {% Q, A8 i8 J

  187. & F; c$ M- o8 d5 N) v. |
  188.                         print "Refresh..."
    0 K. o  R1 \" D5 P* X) w- K
  189. . D5 M+ X- v5 I) N% ~
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    & E; p( ]3 W5 \" t) \& m! `: n
  191. ; M( c& {* `2 ?1 T5 X" Z5 _
  192.                         time.sleep(1)- |! b* |( N, d1 `# V

  193. 7 p' k+ Q6 L# y) S* O
  194.                 return points
    8 o+ Z. f% b% }) g# X1 F

  195. 1 l5 ]; x9 ^# _* C) {
  196.         except Exception as e:
    . h3 ?' `$ m& z

  197. & C# N3 k8 Y1 R, ^
  198.                 return 0  ~4 Z8 Y* U0 l5 I

  199. 3 A6 O7 c' e5 H; h7 c
  200. for i in range(0,5000):  W( O+ [6 K. ?: E* _; @
  201. 2 c7 E' z; U- n& Q
  202.         try:
    + X& Z# h! N6 {
  203. " o0 g8 `3 ?' Y2 S1 l  C: ~' o
  204.                 captcha = checkcaptcha(driver)/ {- b* G# y$ R" n

  205. + p. q6 m: s7 N$ e
  206.                 time.sleep(1)3 m+ _+ P. o7 x, x9 ?
  207. 2 ~* l+ _! k% Q* m
  208.                 checkRefresh(driver)
    " Y1 ]+ P5 {4 I& `# T5 u! u
  209. ! A" m9 m/ _/ e7 n- ?; e
  210.                 points = followbutton(driver)# r- g, i6 U2 d

  211. 1 l2 m6 b  U! G3 A8 ?8 H3 C/ a
  212.                 time.sleep(65)
    , |4 L6 g0 h+ A4 l- F. X6 L) c
  213. + F$ X/ v3 D1 s8 B) x' v& K
  214.                 driver.switch_to_window(driver.window_handles[0])$ Z- e1 D  H% X' L. p

  215. ) T( ~2 z: x5 y4 V
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    6 a' H. W1 U5 P$ u

  217. ( M$ r5 N3 m' H4 r9 Y5 J+ X7 i  u, F
  218.                 print "points: " + str(tmpp)
    , d- [1 S+ s& }" G& L1 r' U2 M

  219. 6 X) Z, K0 Z' K' G4 U* r
  220.                 if points == tmpp:
    6 ?/ l9 [! i  G
  221. 2 x6 p( F: [* H. e, s& s
  222.                         print "Refresh..."5 L+ H1 g* l+ m' B, R/ G% ]- {

  223. " [( c5 W% Z" K6 n
  224.                         driver.get("https://youlikehits.com/youtubenew2.php"), h3 h+ Z2 Q- w( ]
  225. 4 ]+ ?% o5 W7 b# ~* m( X# A/ F
  226.                         time.sleep(5); z7 x, g. x+ n' y' O5 Y6 \) W

  227. - z6 H" t7 v, g3 H
  228.         except Exception as e:
    , P2 H; d" N. }  h7 ^6 J! |9 s! U3 |

  229. 4 T* ]# R& \: s- t6 X
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
      c5 H% g8 ~/ c/ _7 X  M, @3 }2 Z

  231. 0 L# J# h, X% o, o* Z, A
  232.                 print 'error: ' + str(e)( [1 b, e# l8 N  Y6 i) o2 c4 h- K
  233. # O$ M% w, R7 v) u* _9 y/ O
  234. driver.quit()
    ) E3 \' g1 E! ~! [; j
复制代码
( i, j3 x# }2 O# Q. r: ^

; H  E  O' x7 f+ o7 I! R1 R9 w5 D+ t+ A+ h
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 % A- {  ^% P* \/ i6 p
4 T' P& J, y4 V' T, 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

主题

166

广告币

246

积分

初级会员

Rank: 2

积分
246

社区QQ达人

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

使用道具 举报

9

主题

972

广告币

1469

积分

高级会员

Rank: 4

积分
1469

社区QQ达人

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

使用道具 举报

176

主题

1052

广告币

4108

积分

超级版主

Rank: 8Rank: 8

积分
4108

社区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+ N9 p% `$ t# `' ^/ a1 v6 k+ E
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

% ?1 B) G4 Z" ^  s小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈# b7 S6 {! s. T# d

. Q8 P) V0 S, c' ?7 p/ a
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 11:33 , Processed in 0.047721 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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