AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Binom
 谷歌+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开户代投/三不限/白名单fb耐用号0.01一个fb账号官方合作商
搜索套利开户❤️Bigo/Kwai/MediagoFB资源,账单户,分享户,国内一手FB企业户BM户账单户源头广告位出租
查看: 9673|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

Rank: 2

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑
3 q; }7 N6 s+ a. u) N$ X; R+ z3 {6 L6 L$ F

( j8 }/ s2 X  M# d9 t& T( A

  1. $ x- I' ^( X, z9 H7 T8 t( _" a
  2. # -*- coding: utf-8 -*-
    ) @; @; C6 `0 }

  3. 3 i- f" T! y8 v- {3 N9 \
  4. from aip import AipOcr
    1 r0 ~* k$ @3 ^- a9 w2 V
  5. # g7 |; v0 ], B( i! w$ g5 U! |( z5 w. |
  6. from selenium import webdriver
    ; n+ z* u, d% F9 C
  7. : |5 C% [# ]+ \$ }
  8. import time
    - Q2 a, p; W" q: t8 D# C2 j$ |- Q
  9. : @6 Q2 r. P( @  F/ g4 [# x
  10. import random2 G. r* D9 D; F3 [7 d6 Z
  11. , d! v  |2 O( A* h( B
  12. import sys,re
    . Q2 h9 r! x* N9 N
  13. / S9 H# ^8 Y' G' D
  14. from PIL import Image, ImageDraw,ImageFont9 c8 ?( j. M! C" y4 |5 M
  15. ; ]2 L) C" P' j2 [  M( {: g
  16. """ 你的 APPID AK SK """+ P4 \/ a3 A: m( t$ `
  17. " |1 l8 I5 C6 J' {- z
  18. APP_ID = 'xxx'$ }- T5 |9 I; B
  19. ; J' o3 e& u: U1 s+ b7 `
  20. API_KEY = 'xxx'
    2 E/ O9 g0 ]4 W/ g! W
  21. ( q" r0 R0 u4 F2 F
  22. SECRET_KEY = xxx'
    ; z( y' y, g5 S

  23. # T8 h$ b' i1 N1 Q% z5 l
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)7 w9 t5 K6 Z6 G# g

  25. ! C7 H" r3 l) x1 {0 v+ G
  26. #PROXY = "127.0.0.1:8118"
    5 e& Y# w) Z0 ]2 G
  27. , x, m0 {- n& y& L" T8 |
  28. chrome_options = webdriver.ChromeOptions()2 H# y$ c4 O4 l3 u. a" ^" L' q

  29.   p' L- c! V! ]" ~0 V' Y
  30. chrome_options.add_argument('--headless')
    ( ~# n, ^$ N8 w2 G; n$ Y& k

  31. $ O5 x9 X9 m# q8 a# W- h3 \* O5 k8 f& W
  32. chrome_options.add_argument('--disable-gpu')4 {) X: C4 u$ n& ?* `

  33. # \+ B5 B, ?: I" @5 v. |
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)$ T. m% Y! [! i! h# ]

  35.   B8 m: v/ i* S1 e2 `
  36. chrome_options.add_argument("--incognito")6 J- f- ^, X8 ?! v5 g: u
  37. % ^$ G7 M0 X+ y. Q1 V
  38. chrome_options.add_argument('--ignore-certificate-errors')
    9 P- O8 n2 F. X2 `8 ?& D5 q
  39. , W$ l: \. U' O9 c& S% K
  40. # Win
    2 }: e7 Q" V3 M: E$ |. J
  41. 2 c2 d6 i4 l, Q& i; R
  42. # chrome_options.add_argument("--log-level=3")
      q" C/ }/ y- _% V

  43. + ^8 Z0 p; Z. B' K: J
  44. # chrome_options.add_argument("--disable-logging")) a) I# {3 ]2 J; w3 y. t" t
  45. ! t9 N# [  ?' V5 \4 `; F
  46. # chrome_options.add_argument("--disable-logging")
    0 ^+ R; P. L, U

  47. ! G1 B/ X5 `2 C" S
  48. #chrome_options.add_argument('--no-sandbox')/ t3 s; w% t: ~  w

  49. 7 m5 [1 ^: }# X0 K- Q
  50. """ 读取图片 """( L5 i4 {1 i3 t! t

  51. 6 k8 z8 }$ e* |( o8 Q
  52. def get_file_content(filePath):2 B9 Q+ F' W/ r. {1 Z) M9 ]
  53. : e" Y& H, D4 k
  54. with open(filePath, 'rb') as fp:, O/ L% g9 o, e+ d1 X, m: D

  55. 0 d$ T3 G" b; v0 L, }  c0 W+ ]6 h1 ^
  56. return fp.read()
    + Q0 J: V3 |7 y& k: _

  57. , |6 M0 f2 ]/ t/ Z# z/ E
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)0 b7 m# d, F3 ^0 B" _7 y% t" D

  59. . ~# }: H7 P9 K# p
  60. driver.set_window_size(1280, 727)
    " K0 B0 v8 ^2 U, b; J# {. a  Z
  61. 2 g& Y  s8 {- Q1 l8 H
  62. driver.get("https://youlikehits.com/")
    + A; K+ Q$ ]" s% z! R
  63. 1 Z' {: K+ Z  W, t- ~
  64. time.sleep(5)
    $ J6 t5 x: l- _2 i1 b# [
  65. : S: P+ q1 h! E$ u+ B
  66. driver.find_element_by_id("username").send_keys('11111') #user% V/ \/ y! e6 u% w& M+ n% j
  67. 1 h( d: [% _9 {1 X- I
  68. driver.find_element_by_id("password").send_keys('111111') #password6 O& P) `" u9 s2 S$ @  ?2 s' d

  69. 5 h3 p/ S" ^. r, S. ^5 \
  70. driver.find_element_by_xpath("//input[@value='Login']").click()4 R$ K& X( M* C( r

  71. 7 ?8 A4 @" ?1 u- T- I. \
  72. driver.get("https://youlikehits.com/youtubenew2.php")
    ) _- ?( u; l, r! s

  73. 5 n1 v" E8 |+ S% x
  74. time.sleep(1), E% I' }4 Q' v3 @) H
  75. ; z, V+ F2 w* ]% b6 x
  76. #Try Again
    ' f/ w8 _& {- ?, S6 F) y
  77. # t; S2 d  u) n4 d+ S5 M& b
  78. def checkRefresh(driver):
    # y. ^/ m- D; j+ Y4 O- @5 H9 ?
  79. - A* E: z; ~# Q5 ^0 ?, g
  80.         try:4 ^. \9 L& O) Y; \8 N' p
  81. & z# O6 X( p# N. z* ?% f
  82.                 Refresh = driver.find_element_by_id('loadmore')' L( {8 l5 m! o* ]; }: P" h
  83. ( N# n" [* P, e4 J; o$ C2 [
  84.                 Refresh.click()' c$ L, e- H8 ]  K8 c+ w3 ~" \
  85. 7 F' c3 [( ]; Q
  86.                 driver.set_window_size(1280, 727)3 t+ u; a) }% p

  87. 0 ^9 ^; B) h, h4 h( H
  88.         except Exception as e:
    ) d4 y# [! S2 p$ C! m0 V
  89. 3 H2 v- B$ j" h' X8 Q
  90.                 pass
    + i" o8 S# f: y$ w
  91. . m  q5 u3 u3 \) S6 M$ R# _: c1 _
  92. def checkcaptcha(driver):9 |0 U; E0 y+ `; i( h% @

  93.   B+ L9 t$ W  r6 k) @
  94.         try:" W7 e! P3 H% J0 J! o

  95. # w* x& o" S4 e( y6 a
  96.                 captcha = driver.find_element_by_id('captcha')+ _' F& z: ^1 v

  97. . r$ J8 B& D2 h8 ?* O, c
  98.                 print driver.get_window_size()+ n% H0 c; v' U! c+ B

  99. 3 P' V* N( R' o) c0 A( m
  100.                 time.sleep(2)
    ; c' @. x* L1 ?3 O0 ^

  101. # `2 e' E" q. i- Q% M
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    7 R/ C& O; n3 v( p7 E0 z4 K
  103. 8 N8 @" r# h, r' ^" c
  104.                 im = Image.open('/tmp/screenshot.png')
    ; v6 D7 ]6 i7 |
  105. 4 C0 f5 l* l( ?2 E% h$ o
  106.                 #取消headless模式
    - w4 N, C$ y% s. |

  107. . {' r$ P# s# b- u" W+ j/ Y
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS); H& B  [6 @. ?& S
  109. 4 b" x- F5 G5 F! T
  110.                 ! w; |3 ^- M- p" \: |% _. a
  111. ( X' K# D# Z) m( P; [; S! W+ _
  112.                 #开启headless模式
    : H4 t' s( N. [0 c- F. D& B
  113. 4 b8 ?& \  `7 D: p# ~0 K
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)- f; g! R& f& ?& G. z* J

  115. 3 D+ h% D" J9 u; \8 ~- i( g2 Z
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    2 m3 u5 g7 D2 g& p. X

  117. ; z' ?4 R, W) o9 N  r, w
  118.                 left = element.location['x']+ I. k) I1 U: z$ h5 N6 ?
  119. 4 ^$ d" s" x8 m* d4 Z
  120.                 top = element.location['y']
    ( j2 h! l6 F6 J0 h

  121. 6 C6 {1 u) W) ~; [, w
  122.                 right = element.location['x'] + element.size['width']3 f0 {# ]/ k8 }- |( X
  123. - B$ g& I" t- d6 n0 O: N1 v
  124.                 bottom = element.location['y'] + element.size['height']
    2 M5 E% G5 `9 h! }

  125. 8 z/ C$ @' k8 Z
  126.                 ; t  W$ G8 Q/ ^% E4 i
  127. 6 j/ @1 F; r; ^9 U2 Z
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")
    , q5 O# W8 B2 y& Z# x/ u. M: G. w

  129. ; @' W3 B( c0 u& i: q: e* C. s
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")$ D# C( ?% J# H. {7 {" [

  131. 7 `2 ]; |$ k" o
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']"). t! I3 O3 q4 h
  133. / |2 v- V8 O0 z
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    ; m2 j9 L1 P! w  I
  135. * k: j. t- ~3 h# r
  136.                 image = get_file_content('/tmp/screenshot1.png')5 H9 a5 P- t/ c9 G

  137. , p% a1 Y! @" U' ?: T0 O9 o! L; F
  138.                 a = client.basicGeneral(image)
    : w% g0 U. O! m

  139. , ^- S. y! v$ @6 i2 s* V* `
  140.                 print a. H# I' |1 [1 J5 L

  141. , t4 z$ K: Q' N6 s5 C$ ~. x
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])! G6 E; ]* d1 |+ z( o+ g; Y! ]
  143. ' t$ _$ P5 W* j4 S' g/ G2 D
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    , U& a# D! o# B* N' N7 M

  145. 6 a" U, [4 [3 r% F& V
  146.                 yzm = re.sub(r'x',r'*',yzm)
    4 h  l( U5 ^6 C3 K( |& k! C% S8 {2 n
  147. . [6 G# F3 b) U/ k/ x
  148.                 yzm = re.sub(r'X',r'*',yzm)6 l/ ?2 M' B0 V& m

  149. ( k; u. t9 Z2 G
  150.                 yzm = eval(yzm)+ G- b0 ~& A- F. I' z, u. M
  151. $ o3 E- C$ x( w  u0 e& @: }7 u/ ~
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))! n, p) O; q8 b+ u$ B: w0 t
  153. ) c$ w# ?; A6 P  @2 I
  154.                 print '验证码: ' + str(yzm)
    9 J  g" X- z8 w! u. w
  155. # T6 R. Y6 o! e/ w' }, p
  156.                 driver.find_element_by_name('answer').send_keys(yzm)" ^* n! k. S& Z2 F8 g; V4 q/ l
  157. 4 K0 [/ e" o/ i& M* ~# Z
  158.                 driver.find_element_by_name('submit').click()) w( f7 V4 ~) Y4 L4 |

  159. 4 X+ f7 @6 `5 Q. r" s& R
  160.                 time.sleep(3)
    0 L0 ]8 \+ u  r0 d3 e- X+ S- \

  161. 9 Z9 \/ I5 X' }$ ~# _
  162.                 return 11 B: W! v8 F$ ]7 A; ?0 |
  163. $ r+ h4 ?& \6 z7 l' w3 W  S
  164.         except Exception as e:
    , @* @6 G2 b  U  ]

  165. 9 z! i) Q0 b# E' u6 o
  166.                 return 0
    $ ]0 y% M4 V/ O2 Y# C
  167. 1 p$ ]2 M. v4 H6 W) d- E
  168. def followbutton(driver):
    , W' n# w; ^& s" ?) z& I# D

  169. / O' l. N, U) g2 }. R8 B9 ]
  170.         try:
    " O0 ?2 n& g2 \
  171. 6 v& ?2 i9 E' s. x& H8 Z3 h+ L
  172.                 driver.switch_to_window(driver.window_handles[0]). i- _% j' z& K: i

  173. : d* _& X7 F4 y3 z
  174.                 points = driver.find_element_by_id("currentpoints").text0 V' g+ m# f* w! D$ T$ w; ^( ]
  175. 3 l- S# L! H, w3 E2 R! q5 P. D
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()" j* t: ]0 O5 C1 c+ P0 N7 D, [

  177. 7 ]) m6 `$ Z* p% I, \; U
  178.                 driver.switch_to_window(driver.window_handles[1])+ W4 l# o9 Y6 R, g! m
  179. ; i, Q  t: V* k- q
  180.                 VideoSource = ''.join(driver.page_source.split())
    7 Y4 S  j0 h' G1 ~, Z5 i
  181. : m- h! I! t  y% b$ F6 [* C5 K4 N
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    ( h* w& y; [# n0 \# q0 l
  183. + Z; Y2 _9 m! @7 Q# W/ m. W
  184.                         print VideoSource
    + S9 `; j: c+ l
  185. , v2 `+ o+ Y* v& Q& N% b
  186.                         driver.switch_to_window(driver.window_handles[0])) H) s  E: l$ V$ N* Y2 P
  187. ) j' g( t' ~0 D( w
  188.                         print "Refresh..."% P8 p$ z, ^8 B# l2 r  ^
  189. ( u4 z; c" h7 X9 Q! Z6 u1 J- l
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")9 n4 H: ]1 n3 d, U3 f! b8 H

  191. ( D& t' _, N; N: o9 Z( J9 ?2 o
  192.                         time.sleep(1)" B' K" i5 ~% e& y" c1 K9 U9 \2 D

  193. ( y8 r! F* L* H  d/ w' P
  194.                 return points
    ; Y5 c! I" b2 N0 P( h
  195. & x3 U3 C0 @. Z
  196.         except Exception as e:
    5 x8 U0 B7 V! w$ _
  197. & x9 P5 q9 k8 H5 I
  198.                 return 0# O) N# ?* o0 S

  199. 2 |. Z# s/ Q1 [9 u# H( \$ ?
  200. for i in range(0,5000):
    9 ?, c& k, o+ ^2 b4 o8 e, {& x6 V
  201. ' i7 U( q0 {/ V, A
  202.         try:8 A6 ]5 R5 R; o6 c
  203. $ t/ o: j; N7 ^& S& z( Z& \
  204.                 captcha = checkcaptcha(driver)- }+ V; }  H2 ~& t$ ]2 O+ ^6 @
  205. 6 S( K' j% ^8 b. ~3 t" c6 R0 t
  206.                 time.sleep(1)
    ' G5 ?" W3 m2 |

  207. . z6 a* Z0 {) E+ ?
  208.                 checkRefresh(driver)
    9 b4 ]! M: D3 F3 C: s
  209. * R( O! r- C. N7 h" Z* ~
  210.                 points = followbutton(driver)
    3 _! Q1 z' H9 n) ~* a

  211. 2 i( B8 |3 v% h) |, t. ?
  212.                 time.sleep(65)
    ( v" Y6 j# M' j/ g3 L

  213. ; C+ {1 F0 k" _
  214.                 driver.switch_to_window(driver.window_handles[0])1 ?4 B1 z% {* r5 T- b

  215. : q9 j: J' R4 s+ M" d  q
  216.                 tmpp = driver.find_element_by_id("currentpoints").text* ]) B/ o6 J* N  o
  217. 3 ?  D, i( v9 J
  218.                 print "points: " + str(tmpp)
    ; m' O6 }" K6 E) ^" g

  219. 8 C0 |3 g7 o9 Z
  220.                 if points == tmpp:# j7 d2 b% ?5 o! A
  221. 6 k, K+ [* }( s& X* z* z
  222.                         print "Refresh..."
    ; W! v/ t5 p2 S% D2 q
  223. 5 f$ o# o% T9 ?2 E# _  g( E7 q* ]( p
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")
    ( I+ ]( `* n, P& ]8 W

  225. ; j! R& U! T4 m% J' c
  226.                         time.sleep(5)' }, s% }. o$ |! ]/ A% O
  227. ) ?* k- l5 s5 H! i7 n$ u
  228.         except Exception as e:
    ( n* m1 d* \+ e+ L( s% c% i* W% u
  229. 3 Q' Q+ C+ c1 L# D: n
  230.                 driver.get("https://youlikehits.com/youtubenew2.php"): l  i" _8 d/ o' `* \

  231. 6 g* j* y" p4 H
  232.                 print 'error: ' + str(e)
    " \5 E' l9 c  d  c, v0 G4 c
  233. 0 j% n1 |  e! k4 ?. f% o
  234. driver.quit()5 r0 J- r0 `$ r& O
复制代码
3 s  O6 f" p5 a* r  w: T6 ^# H& b
$ Q7 `0 e+ l* n0 W& f
+ f% t% y# [! c& l* `: A7 Z' `! O4 c
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
0 Y. s+ E$ v  \5 w
; K. V* A- l& H( R2 |  a# P

评分

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

主题

979

广告币

1476

积分

高级会员

Rank: 4

积分
1476

社区QQ达人

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

使用道具 举报

176

主题

1061

广告币

4117

积分

超级版主

Rank: 8Rank: 8

积分
4117

社区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
, ?! @" w5 \' X" B' y* g% H' T# O用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

4 G8 l" j! k4 p/ {5 b小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈
2 m3 T4 {8 K8 l3 }2 C
& ~# T# t7 d0 i
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 18:37 , Processed in 0.052887 second(s), 19 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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