AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理Facebook 批量上广告
尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)
IPCola原生住宅IP⚡️$1.8/条双ISPTK加白户/二解户/FB海外户/GG老户海外CL企业户源头 FB高权重耐操个号⚡️稳定过审
TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户域名防红⚠斗篷工具/可试用3天
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10316|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 . y$ b" W5 k" s. H% ]

+ x4 u9 j5 `- K, ?
( G3 e) U9 o# ?: [0 g6 [, l) K: D+ Z

  1. / v* {; j+ u0 g% P9 ~8 m
  2. # -*- coding: utf-8 -*-. z4 E# k( v  Y/ r/ _& i1 c) `% J4 l0 W
  3. * P* }1 ?" K  t9 K5 x, }, A
  4. from aip import AipOcr& ]  w) S; S. C: M; p0 y2 i

  5. 6 O6 c; y8 o) v* S) g+ ~
  6. from selenium import webdriver
    % Q8 T' e( O4 ?: }0 @$ E% q
  7. , M( |# P; X0 U9 t. u) g# o. ^; L7 w
  8. import time
    8 b* z% X- ~. _: B* n  X

  9. * W1 i, P- J9 M, v1 @* S
  10. import random
    ! H% O1 s/ m2 R. [3 D% ~
  11. # `* f6 `: J2 R' n. E
  12. import sys,re6 H: y: o6 D) \/ [

  13. ) {' V5 ^/ y+ L; k7 {5 e" b( h
  14. from PIL import Image, ImageDraw,ImageFont
    4 z! Y9 a: u) s  [: y! E. v9 b2 o
  15. 3 q2 d! S4 J: c0 l! @% L' n" v
  16. """ 你的 APPID AK SK """/ @  t6 ^, Y5 l

  17. ; z+ r" e" ]6 s. h8 J- M" i3 z
  18. APP_ID = 'xxx'. u* r) Z2 c. ^, R1 L
  19. 8 p6 K2 J- e1 c$ ~
  20. API_KEY = 'xxx'
    $ U2 {! ~, l: u

  21. 5 U( p: \- N  e# }3 I
  22. SECRET_KEY = xxx'
    2 b% o/ I6 k$ {
  23. ( z6 F! S! c" h7 t8 e# I
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY); ]& F7 w$ I% u' i) }; M+ R
  25. 0 s& B' K5 @$ v
  26. #PROXY = "127.0.0.1:8118"
    . z. I* j5 E4 n% c6 H
  27. - l7 L% Y" [7 _& O: Z# v, C
  28. chrome_options = webdriver.ChromeOptions(), C3 G8 {; Q# h2 I5 i4 A% e

  29. 2 N( q! [6 t7 Z
  30. chrome_options.add_argument('--headless')
    - l* A7 o; F7 C) y! L' g
  31. : d5 V9 B) n0 u+ c0 o1 Z
  32. chrome_options.add_argument('--disable-gpu')
    - |9 I% ?) P, Q( V
  33. - P% B) V! n. N
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)3 p' a7 u% h4 n2 Z! X0 w( l

  35. " X) ^, L3 c# [, c4 f* I, a( e0 z+ l
  36. chrome_options.add_argument("--incognito")
    3 f. e! ?# O* a4 Y5 P1 g* R3 A! g

  37. : y$ P+ q( \8 D( l% f6 r
  38. chrome_options.add_argument('--ignore-certificate-errors')
    * g4 U1 L4 c* R! N6 @; n  L

  39. ! q) r6 H) t  e/ I" i0 o  N) ^
  40. # Win  E7 S9 C" n8 o
  41. ) a; r! f4 y$ S" D0 E7 E4 [& z. T
  42. # chrome_options.add_argument("--log-level=3"): ]% z/ `$ s3 C0 q8 B+ ?# l
  43. $ S# w3 n1 B/ j- D  |, R/ ~
  44. # chrome_options.add_argument("--disable-logging")
    7 g. A  s4 E* o

  45. " v. c6 r6 J5 U
  46. # chrome_options.add_argument("--disable-logging")
    7 ^3 A6 ]& u8 A/ o% p# v, V- ?# I

  47. 4 R, |* ]/ D" M; R/ R5 U6 w' I
  48. #chrome_options.add_argument('--no-sandbox')
    , @0 z' a# ?9 `! t+ `3 O3 R" \
  49. ' L6 L/ B! S" c4 i# t* m
  50. """ 读取图片 """5 W, r0 Q: |+ M, L" ?
  51. 3 K+ p. ]% E8 x' [* o8 Z
  52. def get_file_content(filePath):
    * g. ?0 Y, b& I4 `, S7 f7 O* X

  53. / g" w& Q/ r, x: r& s- l" s
  54. with open(filePath, 'rb') as fp:
    6 x$ |3 y* |. w8 C% @1 f) ~
  55. : I- N) O8 `' \6 ~9 h: Y
  56. return fp.read()
    ( Z' |: X8 o9 k% o1 n/ v& K

  57. ; m* ~1 h& _. Q( e: \) F! n
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)$ J* Y0 r4 S0 y) H% [# f
  59. 9 T( o, [  ^9 I3 P8 Z3 j# A
  60. driver.set_window_size(1280, 727)
    ) ?# F- a0 G, p; l
  61. ( n1 G4 ]' q1 Y3 e
  62. driver.get("https://youlikehits.com/")6 [) D5 X8 e, S  E# ]+ r4 |. N7 F

  63. 1 V& \: T7 C# C- F; Q, K+ u' G
  64. time.sleep(5)/ A+ I) p4 |0 h3 n- O/ [

  65. ) h9 R, k5 E# X3 k
  66. driver.find_element_by_id("username").send_keys('11111') #user
    * ^% P! P4 G. |& I9 r
  67. - J0 h. m' {1 I# s
  68. driver.find_element_by_id("password").send_keys('111111') #password. {9 A3 t. @3 ^9 Y! y4 [  ]& |, b
  69. 7 |7 R* ]+ l: R/ O: _+ W6 A
  70. driver.find_element_by_xpath("//input[@value='Login']").click()2 C* v. J" J, ^; ^' [6 h0 Z5 d
  71. # O! m4 K1 n$ i+ F- I# q1 y: t
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    4 a+ B: }/ [( D  x- J
  73. 7 a8 A" g# H# C  x. N4 Y$ T
  74. time.sleep(1)
    9 L3 i0 s; h/ n3 w3 M
  75. ' F0 U$ U& ^5 x4 x, ?- `% W
  76. #Try Again( D4 h; N; \& D
  77. 5 ?% v0 A7 x* N
  78. def checkRefresh(driver):
    + f7 l4 e  F, i/ D
  79. 5 ]  m& I: b3 C" p0 k! Z
  80.         try:
    ' l3 V9 _3 g4 ?/ x3 h6 F8 B3 D0 K

  81. $ z( B. u! \2 s6 _0 y
  82.                 Refresh = driver.find_element_by_id('loadmore')
    " \- E! \7 P" _. _. G$ a9 B
  83. $ m1 c5 t* ]6 [
  84.                 Refresh.click()
    & S! U' U. Y; ~* e

  85. 5 w( z1 [# A+ c6 `
  86.                 driver.set_window_size(1280, 727)
    $ s) u7 `3 i- T5 n; m) L/ G1 X2 I

  87. $ V  H: w  k0 J# R/ y
  88.         except Exception as e:
    9 `- W3 U# m( T* l! G, N& w8 b
  89. 8 C. H) L) Q) d, T% N) |, y0 E
  90.                 pass
    1 \0 A- K; x. x: G) U+ U

  91. ) S# Z; l2 Q- a6 q9 x
  92. def checkcaptcha(driver):
    1 |7 T6 |0 z2 Q: `+ m
  93. . A# B( K% H* p- P/ R' ~
  94.         try:
    5 E+ W! s+ Y3 Z  O, A
  95. $ J; {( P3 n. g( h; j. c- u7 B% U' p
  96.                 captcha = driver.find_element_by_id('captcha')
    ) d0 A2 p3 S' k. V7 ]5 N
  97. ! D! T6 g7 t  U6 b% F4 C1 ^3 k+ V
  98.                 print driver.get_window_size()! [- [8 K3 F( O
  99. / q; ]6 O- J* h% P3 W; k% I' E
  100.                 time.sleep(2)5 v, c/ F- z7 e

  101. & `6 V3 z) f$ p/ F8 i
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    : L9 [* P* W+ i4 O  L

  103. % t; A  ^5 R; Z0 `; J
  104.                 im = Image.open('/tmp/screenshot.png')0 ^: q2 m  t, q, y/ X9 m
  105. ( ]5 m9 m, Z% F- D. J9 S8 ]  ?- f
  106.                 #取消headless模式% t5 v) M3 R- M$ m/ r5 h2 E
  107. 6 A! |/ W+ f& C$ ~( R) ^
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    # H, T8 n. P9 g/ U, W/ }

  109. . D8 V% X7 j- i7 Q* u" B2 y3 H
  110.                 5 o% }0 N4 O6 T! j3 W; a- ^

  111. # Z" K, l* P0 V5 z/ N9 T
  112.                 #开启headless模式
    / r" t, F2 {; h4 e* `8 I, i

  113. ' D, }$ g, ~: s% d& t
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)3 F6 k1 C9 j6 v+ t2 D' v4 P, s
  115. * E3 s' h3 S) W* G, s
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    & ]0 k: D8 V  Y8 |& t, U+ A

  117. / R  C+ p$ H; k; m
  118.                 left = element.location['x']- r) }7 K$ M" x  H6 c, L
  119. ' i0 q  Q8 Q# l9 q
  120.                 top = element.location['y']
    $ H) N) N+ h8 z6 K# P
  121. 7 C6 B" N' A% H( F
  122.                 right = element.location['x'] + element.size['width']! ]& ~, n* v+ [
  123. 1 h. v! m! d% X, b: B5 W: l
  124.                 bottom = element.location['y'] + element.size['height']; p  @6 w5 G6 i! [: f& G
  125. 1 @. @) A& p  W7 b9 a7 G
  126.                
    ) `, k: ~+ y" d, E* z
  127. ! R; `" I% k% d$ H3 P
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    , w/ ~5 y( u) a1 U, k& l* A1 M+ ~9 V

  129. + J6 Y% Q% G  \: h5 Y6 m
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")/ R2 C/ P3 g7 _9 T( o/ m9 r: m
  131. 4 \' S- |3 _6 x( R; Y2 Y) O# q
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")+ _2 \0 i0 J3 r0 Y; G

  133. 7 N" j0 m1 x$ \6 [" K( ~$ g! d: N' D* h
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')' K3 k, I3 a$ k5 ^8 R; c
  135. 0 X: p' t, B: |! Y: W+ g, H: M
  136.                 image = get_file_content('/tmp/screenshot1.png')8 g$ D: N* g1 E3 |: T; h% E
  137.   t. p$ S) Q+ K9 |! Z
  138.                 a = client.basicGeneral(image)
    # g7 g' k4 O  q* |

  139. 5 W- s# r, X$ r9 c
  140.                 print a
    , I, o4 i3 e$ Q2 X/ x
  141.   v- P& \1 v$ z; r. W( p  U
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])4 M9 H% q& P8 _
  143. + D$ P5 T7 d/ ?( W1 D+ u
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    ; s- Z( |! N: _% f; q* q! g

  145. - z# F- e& w# p5 W! I+ T
  146.                 yzm = re.sub(r'x',r'*',yzm)
    : F) _% }7 Q' E# o3 T$ S

  147. $ ?5 ]" k, u' O% v0 P0 f
  148.                 yzm = re.sub(r'X',r'*',yzm): {% K9 K$ m1 m% S& d, k9 F
  149. 0 s  y4 \, I( _5 M- s& X
  150.                 yzm = eval(yzm)  s6 c' {; k  i6 K
  151. ( m% d$ G& c* j' u4 c
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))$ H) T7 A; c; m3 L/ i1 z, _  q

  153. ( ^. r" F1 {- b
  154.                 print '验证码: ' + str(yzm)* |) N5 V+ P2 `0 p& y+ x: N+ G
  155. - L, D3 U+ @, u2 C- X7 K' Y
  156.                 driver.find_element_by_name('answer').send_keys(yzm)" V2 v1 q. k% k7 V
  157. 9 S+ o- f; b- N& `/ K
  158.                 driver.find_element_by_name('submit').click()
    5 R) g+ l0 d0 r9 P' F5 W1 H
  159. 9 x1 t6 F' D) E
  160.                 time.sleep(3)
    - S" n2 I4 T( {7 W$ k
  161. ) Y" r2 a7 l( ?% V: L! b% W( w
  162.                 return 1
    & ?( G9 {) u6 s) Y' t

  163. , h; M! r# d( Z- K. r
  164.         except Exception as e:5 K* p3 [6 C4 H# ]: R0 e

  165. : [! x, ]  o- u# W
  166.                 return 09 l% Z5 I) c  U4 J7 c; u$ f) B

  167. 3 E, p$ @* j0 N3 F0 H4 }' q
  168. def followbutton(driver):. K" m- n' f" p5 i5 a# C

  169. 5 q4 O  F/ @6 `& S% e! n
  170.         try:
    2 n8 P7 O1 R$ y" |+ ]
  171. : [7 b0 v+ u# i' B! v; i" O
  172.                 driver.switch_to_window(driver.window_handles[0])3 O9 p( {- h2 e2 g+ {7 z

  173. $ _9 g: O& }3 C0 h3 l
  174.                 points = driver.find_element_by_id("currentpoints").text
    ; T4 k, W+ F5 R
  175. ; W/ @: `; }4 l
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    . q- f' ?- a- Y; r0 l8 r6 L! j; I: ?

  177. , t6 H8 o+ q+ R4 J
  178.                 driver.switch_to_window(driver.window_handles[1])
    ( h" A4 |* C" z: K3 U+ b/ _

  179. 7 P$ N7 e2 U& F
  180.                 VideoSource = ''.join(driver.page_source.split())
    : }8 y  X" b# w; P
  181. / O1 c/ M  H! x& B
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    , u% o: I" h- n" _% O; h$ z, d
  183. ! Y' B$ p, l+ P/ m; L" }) {
  184.                         print VideoSource' \! H1 ?* w+ u* H( `# L5 O

  185. 1 C, z* v; i, e% o9 z  h; I8 Q+ ^
  186.                         driver.switch_to_window(driver.window_handles[0])% v" E- y. J& p8 J& C

  187. 4 p" d. ^" a* `) M/ T
  188.                         print "Refresh..."( x* o, J4 ^3 ]6 x

  189. & R0 Q4 n1 y( O4 A5 h
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    6 c0 G3 r0 E) _: J

  191. 3 _/ K. g5 Y! k' S4 c
  192.                         time.sleep(1)
    , r# t! [  M8 n+ Q- J, \

  193. % I) t/ p: R" n& n8 H! t9 q
  194.                 return points
    7 |2 k  ~) R' \# q9 k' M' }
  195. 7 q* k  H% d7 }* N. B
  196.         except Exception as e:
    ' G" z, ?0 ]4 \# i% H: o8 B) W4 B

  197. 7 L/ \: b! r; ^  y4 L+ G4 ]/ l
  198.                 return 0
    % y% q4 }% w, j* x0 n! K* f

  199. . a  c* G& v1 W" z/ s  F2 N) y& X. t) ^
  200. for i in range(0,5000):
    : P! E, A  N, C( [
  201. 2 k8 E+ x; R! `/ H# I0 D
  202.         try:
    2 c) s& s6 N: X# x8 ]7 [% C

  203. 3 ~" ?) z! L5 m! i
  204.                 captcha = checkcaptcha(driver)
    ( o# i3 l+ a9 Q- n

  205. " r. G% O* ~/ e3 ]4 X* S+ [
  206.                 time.sleep(1)1 x8 O: C" z# i/ r1 ~3 a
  207. % ?8 I! T1 g9 W4 X
  208.                 checkRefresh(driver)0 K! ^+ J' N% j9 G' X

  209. 1 V3 N* w; \, b0 d
  210.                 points = followbutton(driver)
    8 Z- e- O/ m% A5 [/ ?% \
  211. ) Q5 a0 {. Z- f3 h* }6 H
  212.                 time.sleep(65)
    : C; ~$ U  U6 K2 ~. j2 i' ~8 h+ y

  213. 4 G' Y7 x, y# f- I  d* V) J, Z
  214.                 driver.switch_to_window(driver.window_handles[0])
    4 \. ]9 S9 w2 s$ {1 l: x/ z2 X% z
  215. $ U7 F( s( N. E0 k5 g; P
  216.                 tmpp = driver.find_element_by_id("currentpoints").text  \0 U! r( Y3 c! i; Z1 Y( {
  217. . r7 Z4 Q3 w* B, F5 s
  218.                 print "points: " + str(tmpp)
    # F8 d3 N( Z& R; ~! Y

  219. + z+ y% e1 c0 c. Q; @/ N7 H
  220.                 if points == tmpp:% Q" w" u- o" a! n/ y& M8 M
  221.   n& F# a5 X( C1 T, o
  222.                         print "Refresh..."
    ) [6 C/ J, ?- X- p2 i

  223.   _0 A. i- Z6 A% N
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")% J- t1 K' M5 C! e
  225. 4 q- j  o/ c, g8 C
  226.                         time.sleep(5)- ^2 ~8 y3 H0 M9 B5 L1 H  x9 J

  227. ( O/ i* q5 M5 s5 ?  }2 |8 S, `
  228.         except Exception as e:# w2 p0 C2 V7 m/ G
  229. 5 w+ I2 C! Y$ E5 W' G9 B. X) Z
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
      v2 ^) L) t! S
  231. 9 v$ t. M. v/ T9 L, r9 L
  232.                 print 'error: ' + str(e)
    # i  n4 J8 E1 O$ X% m; _% V
  233.   k( C( d/ \8 K; E# P$ I! D3 s
  234. driver.quit()5 o% j7 Z) d" l7 ?. z" S
复制代码
6 Q: x2 Q& ]1 j
* D% _0 G) M2 K3 Q" ?2 `, S" ^

) ]% n( `5 e1 y% g" ?& }/ ~ 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。 ; D; s, u6 w- Q# Y

: b  f* g$ \, W: p& }- M

评分

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

主题

1026

广告币

1522

积分

高级会员

Rank: 4

积分
1522

社区QQ达人

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

使用道具 举报

176

主题

1190

广告币

4251

积分

超级版主

Rank: 8Rank: 8

积分
4251

社区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
" K0 ~1 U7 ^- w1 ]* p+ G" O用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

; i" G" @' Z) s6 Z' \" A; C小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈) B& L. M, F; D- n. X" n
9 c( ^+ l# \+ R* F
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-21 07:28 , Processed in 0.053501 second(s), 18 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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