请选择 进入手机版 | 继续访问电脑版

AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理泰国仓储,本土仓发货2-3元/单
指纹浏览器,就用AdsPower谷歌/FB/Bing/Yahoo代理商开户7200W全球动态不重复住宅IP代理全球优质流量,选TrafficStars
出售Facebook,友缘号,FB广告号,insFB/TT/KW 加白开户比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN
FB不限额广告号MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量
百度国际MediaGo,独家原生流量虚拟信用卡+独立站收款行业首创新型指纹Cloak, 谷歌奇效!BINOM TRACKER 60% OFF!
Kookeey⚡️100%独享⚡️原生住宅IP⚡5000W动态住宅全场8折⚡全球虚拟卡, 支持U充值谷歌/Outbrain/Taboola⚡️一键开户
FB极速下户/白名单/不收费Affiliate站外引流服务⚡️极速出单免账户投放 FB 广告(送项目)2024做什么 - Media buy 项目库
免费黑五教程(持续更新、欢迎交流)Facebook 批量上广告Facebook账号1块一个各种主页、账单户、BM户(优势)
⚡️个人户,bm户不限额,账单户Adsterra 的CPA/CPM/CPC 网站流量在线注册美国/英国/香港等海外公司EU KETO/CBD - Jumbleberry
【YouTube】油管获利号交易平台三不限/账单户/BM不限额/直播主页FB二三解1元/个9Proxy ⚡️ $0.04/IP, 无限带宽
最佳Health和Beauty联盟广告位出租全球低价纯净住宅/移动IP-免费试用广告代投, 东南亚物流, 虚拟信用卡
VMLogin指纹浏览器+多账号防关联   
查看: 6207|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
adsterra
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
8 y" K# F+ _( x1 J
. P6 _2 l1 E+ E& y
7 M, r9 s/ }! c" m
  1. + U. q' a" R! \8 E+ }
  2. # -*- coding: utf-8 -*-
    7 M. h& `2 `) R* U" k
  3. 4 M8 J; S( m7 w5 b1 `
  4. from aip import AipOcr
    1 x, {" {5 @; e: ]! {8 v5 @# ]
  5. + K) \: U* P7 C- _
  6. from selenium import webdriver. P+ f: z; l+ r8 @

  7. 3 d: ~) Q3 A8 t- e
  8. import time0 Q9 a- T8 s0 b2 @. K' U0 w6 r+ |  ?
  9. % o( w1 y, a- k( \
  10. import random" \8 k& n5 b, P$ n9 F" S: I

  11. " X; Y6 M7 z1 S+ ]' U
  12. import sys,re
    ) p9 z' F, @& r6 g6 m) U& T$ W+ z
  13. 6 R" ?, o3 \0 D" d& N" u2 z! B
  14. from PIL import Image, ImageDraw,ImageFont
      e$ I3 N% P) W5 Z0 p- G2 Z. M

  15. 8 C. Z  h0 N$ p  Y: n; T
  16. """ 你的 APPID AK SK """: I+ j, R2 o& W( H3 a
  17.   Y7 @! ~  T" l4 p6 ?, O2 n
  18. APP_ID = 'xxx'
    ' j) S6 Q0 G  [/ `3 i- d) s
  19. % Q" A' K* M- D3 c0 r7 ^
  20. API_KEY = 'xxx'2 c4 `: G& e) A/ ?2 Q( d2 F/ I( q
  21. 3 n) l( G" P6 r: g
  22. SECRET_KEY = xxx'
    9 y6 ?( s2 i, i

  23. 5 d. {( Y" Z/ ~* j6 T6 q1 p( ^) S
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)6 H1 a' i) Z0 x, {) ]; G' \! m

  25. ! t1 x2 U( |" [
  26. #PROXY = "127.0.0.1:8118"6 D  J" _! f. t& W" i

  27. , G1 w; L  G  Z* }! O: X1 i6 W
  28. chrome_options = webdriver.ChromeOptions()
    " J7 P# y( U6 r* T! d7 J
  29.   _; x- M( o1 X9 p7 e
  30. chrome_options.add_argument('--headless')* U* a* d' x9 ~( o, P

  31. 0 F4 Q3 i0 s( f' {9 _0 y6 `
  32. chrome_options.add_argument('--disable-gpu')
    - D% Y! F$ i& n
  33. + C" I# r$ B  l: I6 y( g
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)) Z# y2 M- T% a4 f7 C  q

  35. # T' C% q5 o; A! B- o+ ~# k9 h
  36. chrome_options.add_argument("--incognito")
    ! O( e. g7 x/ `1 u
  37. ; g" x( D  A% b( V; q
  38. chrome_options.add_argument('--ignore-certificate-errors')5 F! s7 k$ h* }. P8 |3 [$ Y
  39. % k) ]$ m/ ?5 G. l- M& h
  40. # Win
    # L; X  s, E% Y3 ^! J7 R+ ]& ?

  41. % c& B- d; {3 T: k! ?/ S" B! d
  42. # chrome_options.add_argument("--log-level=3")( j+ {0 X8 f) w2 _
  43. / e' E8 G  N# I3 Z, N% u
  44. # chrome_options.add_argument("--disable-logging")6 n- D& Q. q/ j1 J$ _0 U2 ?7 h# |3 C

  45. , c9 t& h9 I; w8 j3 h; m
  46. # chrome_options.add_argument("--disable-logging")
    . L! L  ~: E; n6 P3 G

  47. * M; r  B" ^! @* L% J
  48. #chrome_options.add_argument('--no-sandbox')
    3 Z# x- D. [' y% |, c+ k. i( M

  49. + h$ _" @7 e7 S+ K; r- m
  50. """ 读取图片 """
    1 O" Y4 u  |7 X4 Y; L
  51. $ g+ _' T  M, x
  52. def get_file_content(filePath):
    / I' }1 j, N& U* I2 l
  53. 2 c  {6 u, `: n% v. u; x
  54. with open(filePath, 'rb') as fp:
    , R- }$ [- ]8 }, p# F  [

  55. ! L9 l6 X" B' T6 e$ @
  56. return fp.read()2 K+ E* V2 O3 G3 y

  57. - d& B" J' l( l; F) E, }5 C7 A
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)
    5 e* s" F9 |4 @( q) T8 Y; C

  59. & k' ^) F- q  q, c$ z7 s0 L
  60. driver.set_window_size(1280, 727)
    5 k' `3 E) @: y% l; _

  61. . k/ I# c2 h/ A1 U
  62. driver.get("https://youlikehits.com/")
    ) J' E$ X+ I$ m8 G( m
  63. 7 {: `3 d4 n* q* a
  64. time.sleep(5)
      h8 a( o4 L: k; v* x

  65. 3 O6 O" h/ l# n, m
  66. driver.find_element_by_id("username").send_keys('11111') #user
    # s3 ]$ U! c2 ~

  67. 1 X+ ~$ P2 H1 r' Y# |3 q7 [/ F
  68. driver.find_element_by_id("password").send_keys('111111') #password. M3 G* X9 L, K/ B. l  q  P

  69. : V+ \. {; e) g8 w$ [  z2 k
  70. driver.find_element_by_xpath("//input[@value='Login']").click()! ]! [+ `4 [7 L! a
  71. % O8 [, ^9 C5 T: D  [9 a9 t
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    * O0 S& H1 K- ]- v# b* ]) l: A  ?
  73. % `) `: ]  i5 B; F5 Y- u! n
  74. time.sleep(1)" g: \6 D( d/ z! H0 q% Q

  75. 8 l( H+ `: w4 L
  76. #Try Again
    / A4 k: |% h' r
  77. " q" Y9 _& D, B) j$ p- d8 j! N
  78. def checkRefresh(driver):: F0 ^/ c: b( X* b% T% M$ C

  79. ) S0 R* v/ _9 G$ c0 ?
  80.         try:
    - s- ?- S$ P4 S1 c# C( t/ C
  81. 7 l8 F8 e1 z( X
  82.                 Refresh = driver.find_element_by_id('loadmore')
    # q7 h6 c% v, C1 q: Q: [3 w
  83. * ~  L! g2 y' k/ u
  84.                 Refresh.click()
    $ _$ |2 g6 ]  }1 G% P
  85. 1 p- a+ Q- N* ^% X
  86.                 driver.set_window_size(1280, 727)
    - S8 A. ]3 U8 t: A- l0 X
  87. ' [7 x5 r4 X% n/ T4 y
  88.         except Exception as e:
    8 I4 B9 s- h3 o6 g" w1 t# \) ]1 w

  89. 7 r* g! P  P8 d; W( I1 L
  90.                 pass% o) q" [' I) G, S. }/ v

  91. % \( Y; Q, a! O) Q9 Q) X
  92. def checkcaptcha(driver):9 u5 v! u3 S  G& Z" d+ H! p' V

  93. " r* ~# J/ V$ d
  94.         try:, m3 j- I1 Q3 S; A% N4 i

  95. % L- G$ K% ?+ F* d# |4 }8 c# t2 }
  96.                 captcha = driver.find_element_by_id('captcha')
    " E+ u$ n6 c7 ?5 C# ^5 f

  97. 7 L4 X- r- u3 u; U0 S* }
  98.                 print driver.get_window_size()9 ^2 K7 @! Z" ^% c. K, d, M9 t5 ^' e+ |
  99. 7 z, D, n+ w" m: E6 B
  100.                 time.sleep(2)
    - l# B9 O/ h2 Q- J' F+ @

  101. 0 z) D9 D1 r' a9 ?3 k; _5 F, b
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    : _& v6 d: C0 V( Q3 U' a  T' u

  103. 5 `$ `' _! @) E% l
  104.                 im = Image.open('/tmp/screenshot.png')
    ' @3 [/ |( D/ |  M

  105. 3 x- Q' U; X8 `: u% Z  `
  106.                 #取消headless模式
    2 G) U/ ^) e! {8 \. u# n4 q" t
  107. ) o3 E( @; K# l8 b
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)9 B8 U. s7 X* r0 {' D: o) W

  109. 5 \! W" J  i$ L9 l
  110.                
    ) I; N  m( i' {" Q5 g; m

  111. . @5 w% D7 P9 e& w4 k
  112.                 #开启headless模式: X4 C* r( n* m- b

  113. ( l: i: U, Q0 d4 u" w
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)3 J0 Z* }& K% N

  115. " U" W$ B3 a5 Q% X! ~. {
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    & Y) q6 V, M1 y. n
  117. 7 Y8 t) c! H  ?
  118.                 left = element.location['x']
    ' ]- l0 N$ E  |6 q& p; y' N
  119. " i, A1 h0 e# k) R: C& I
  120.                 top = element.location['y']# x9 K' _. {: |7 l( T: j
  121. & y# B5 b9 s' |/ ?8 j) L
  122.                 right = element.location['x'] + element.size['width']
    ; M" R) a* a8 Q

  123. ; i' \' u+ Q! K7 b3 o  o. Z5 S; r/ [9 w
  124.                 bottom = element.location['y'] + element.size['height']
    7 \! d; D8 f7 U

  125. ) }! F3 i4 u- G6 _; m
  126.                
    8 |0 Y8 L2 _1 ~8 U/ n& _3 C4 j4 }
  127. - ?# h' _+ l5 j; F( i
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    . N. \" V+ R+ a! u* s& C
  129.   N  i$ H4 z" V( r
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")
    - B  @0 x* Y( X2 j2 m1 ^+ ?2 W* E

  131. ; f1 _2 t* {) v* R- f; [
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")& h) D. k  g0 ?5 X2 N
  133. / v9 T' ?* f& V7 w: F) d$ Z' i) b  q
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')9 U8 W5 t" }) M4 p! L, ~& P
  135. - Q& V9 |0 G: Z' F$ W4 d! e
  136.                 image = get_file_content('/tmp/screenshot1.png')$ C7 c9 ~8 ?- b/ {1 N* k: j

  137. % N% ^. K4 f, x' j) ?
  138.                 a = client.basicGeneral(image)
    , h5 y% p8 V! G* d; n# U0 v$ H# n

  139. / S( |2 C" A. F0 m8 u2 V
  140.                 print a
    : @; v+ G0 g9 ^& s9 v& B

  141. ( |  Z& S$ K% N+ I& }5 h7 M" ?
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])1 _2 ]5 e- c1 y6 B

  143. ' [$ m2 l# U/ W" T% `
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    & X; c+ D6 R3 C9 x2 R: L2 s

  145. " n4 Y6 w9 i" N+ `) F- s% u2 \
  146.                 yzm = re.sub(r'x',r'*',yzm)) K* {% D. d: l- P' V
  147. 2 E/ l' a8 n0 _; J! k
  148.                 yzm = re.sub(r'X',r'*',yzm)$ d: K" k1 m8 z
  149. 8 ]7 u- X$ h+ P; g0 ?9 c4 D
  150.                 yzm = eval(yzm)
    . I) |4 H8 E9 [! {- S
  151. / K% Z" c+ B8 n" i
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))0 Y- B; n4 r. k

  153. - I) _- S  O" K) Q+ B* m
  154.                 print '验证码: ' + str(yzm)
    * d9 O$ G$ H/ m; }% y0 u

  155. # s9 L5 b0 }; ]( ?3 H/ t
  156.                 driver.find_element_by_name('answer').send_keys(yzm)
    . S. t- U/ q: T
  157. 2 ?* S9 P6 _; ~- B+ ~
  158.                 driver.find_element_by_name('submit').click()
    . g" G; q1 V5 d. Y& N/ \. x
  159. . s, c- Y% H4 Y( ]; b( m
  160.                 time.sleep(3)1 Q& q5 t" @6 R2 f4 Y5 ?

  161. 6 A/ v6 Y& @; R* B6 `
  162.                 return 1
    2 h1 @6 R- y* Q3 G: v' }2 ~' y0 D
  163. 1 k% Q. Z2 W3 t% S) ^5 l
  164.         except Exception as e:( u( A) S% O8 J: A  s6 M- Q
  165. ' p* B/ v/ y1 l% b; Y3 R
  166.                 return 0$ s+ r0 Y* S' s! b

  167. ; ?. x3 X6 W  e! j7 y
  168. def followbutton(driver):+ X' V& l) J0 I" Q
  169. 2 i; @1 x; L) A& T+ o
  170.         try:
    1 D- X/ i* m" t; A
  171. 9 X) N: c3 z# P) N0 n: A- J4 y) M6 X
  172.                 driver.switch_to_window(driver.window_handles[0])
    5 W3 ]% W( Y) M4 H+ }& \2 i8 G
  173. . _4 B* m6 t& c9 J9 H2 U1 Z
  174.                 points = driver.find_element_by_id("currentpoints").text
    1 V4 ?1 n2 x2 F& e/ i: k; n

  175. 5 q& i" z, S9 d9 B  Z+ S; R
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    , r/ {! D  P* B: L2 n( T

  177. ( f$ u6 B+ p* W3 [8 a
  178.                 driver.switch_to_window(driver.window_handles[1])
    / {; P  g- |1 G' K( c8 v
  179. 6 i2 j7 K( w% G$ i4 N
  180.                 VideoSource = ''.join(driver.page_source.split())
    6 ^7 s1 e2 W  k) Q. T

  181. ; J% I  D) J! S) e5 d
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:7 I: R5 t$ L0 j) `& M1 M$ I

  183. 3 y7 |- B4 `9 g" R/ O( F; d# v7 y
  184.                         print VideoSource
    - ~  l/ {7 e6 ^3 R
  185. % o' Z( b1 R4 R
  186.                         driver.switch_to_window(driver.window_handles[0]), ]4 X- F0 ?3 ]

  187. ! e3 p* q; M) I! Y0 y3 J
  188.                         print "Refresh..."
    4 a% Z- t: G$ m6 D; O# o1 K

  189. $ r" ~  N6 E- o# g* i1 F2 `0 p! H
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    4 m4 d' w8 b4 V8 @

  191. 1 G0 c8 A6 K1 g0 a" O, F
  192.                         time.sleep(1)
    - ~/ V$ O, ~1 q
  193. 4 Q% K" l2 _+ M3 Z$ \: f. |
  194.                 return points
    ) |9 `+ y: _2 t: B5 W$ e

  195. 4 x! o* q# p/ a# w
  196.         except Exception as e:
    8 \; M; A3 r. d- _! y

  197. ; \! z1 y" R' P7 q9 ]  Y
  198.                 return 09 ^: b+ J( U; B* h) Y) N

  199. ) K" r9 ?* [0 n2 ]
  200. for i in range(0,5000):
    * t+ m$ `4 O% B

  201. : B1 c3 W1 v, ]% f
  202.         try:. [/ W. ^6 G) S$ O! ?( |: J; i

  203. 6 e: i0 S9 _( @% |" |
  204.                 captcha = checkcaptcha(driver)
    5 C5 V+ O8 u: \4 T

  205. . c0 x8 D* l; I4 V, R# ^9 ^  U
  206.                 time.sleep(1)
    " F! [$ F+ R! y% t+ ^

  207.   x/ [/ |& X/ j$ s
  208.                 checkRefresh(driver)3 ]/ w6 B# Z& e- ~1 P

  209. 6 j4 |5 _. g& w5 z
  210.                 points = followbutton(driver)6 d, \- S) A' i4 b4 s

  211. 0 E. b% `. A( S$ d$ t; k
  212.                 time.sleep(65)* }  B4 J- X/ }: y% T

  213. 9 o: v: w% ]2 l+ e$ q5 q  y5 x, g
  214.                 driver.switch_to_window(driver.window_handles[0])
    % b6 l1 L& U% n4 E3 R3 V

  215. ; J  L8 [! q  P
  216.                 tmpp = driver.find_element_by_id("currentpoints").text
    6 F" S) S& B2 b. o
  217. 2 p! G4 I4 g' E' s! F4 g) _1 {4 y
  218.                 print "points: " + str(tmpp)
    $ S& U  a0 m' `# |+ x& Z

  219. # s0 K' l& \  w# ]
  220.                 if points == tmpp:7 ?8 J4 Z+ |3 s& U+ Z

  221. ) ?2 X& ?, i% d$ T% ?" e
  222.                         print "Refresh..."
    7 {' [: e/ @6 m8 @, T0 w0 x
  223. 2 B+ J, x( v. o/ u, K
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    # K: ]- n/ J- o" b
  225. ; f! n7 \2 C) M- t8 M; h7 X
  226.                         time.sleep(5)& h! x5 d9 W" G+ Y' k  `, N) w- K6 d2 g
  227. . B4 U' U! H) l1 P" H) d1 K
  228.         except Exception as e:5 P. F$ F! T0 o0 E! }) e& Z0 b
  229. $ v) I0 l' z* V8 |- o) s0 {3 |' N
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    , E5 ~- J8 y; l- v( A( O

  231. / o6 y# k! I/ f( G
  232.                 print 'error: ' + str(e)$ g8 o" [' v2 k4 S
  233. : l$ d( Y, g8 ^4 L' W; C. }4 f' ^
  234. driver.quit()
    - s' L+ C. L* @: G' R, X1 j
复制代码
( w" @' ^8 O: _

) I# u0 Q6 b  ^* k6 V% D
* p* R- `1 [2 k 因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
+ y( i2 B) h$ d4 O+ ]- ^7 \) X( Y9 r7 W% E1 \0 `$ k: 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

主题

956

广告币

1451

积分

高级会员

Rank: 4

积分
1451

社区QQ达人

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

使用道具 举报

176

主题

956

广告币

4009

积分

超级版主

Rank: 8Rank: 8

积分
4009

社区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
+ i" m% M9 {  R' m用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

$ \3 {& T6 s$ w小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈: y& l. ^- w9 c, p$ x7 l2 M
( H1 x6 s: P$ z- i5 ^: f
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 23:37 , Processed in 0.050217 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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