找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手TK加白户/二解户/FB海外户/GG老户
最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇
✔Taboola海外户源头广告位出租虚拟卡返佣1%,国内持牌机构 
查看: 10373|回复: 7

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

[复制链接]

6

主题

303

广告币

310

积分

初级会员

积分
310
发表于 2018-8-28 13:34:29 | 显示全部楼层 |阅读模式
Binom_AdvertCN
本帖最后由 xiaoxue 于 2021-3-10 09:21 编辑 4 G" T: M  h! r! n7 k

0 ~/ a0 m/ S+ l0 R! I
4 j* g+ F5 |6 `. I2 ]- e& o; Y, G

  1. 2 i$ Q3 m: k( ]& Q! s5 L
  2. # -*- coding: utf-8 -*-
    + s! m. X% Y# o6 O% q% v- u1 v+ }
  3. * N/ y, `" N9 D( p9 e# ~
  4. from aip import AipOcr' V( G# ^, a+ f6 L; U

  5. + c& P$ R9 U8 y& r
  6. from selenium import webdriver
    & H. v) [2 E1 f) F0 R$ ~) s2 a0 `, B

  7. + g$ t. X8 q# i
  8. import time$ }. g( H* v  D/ o- [
  9. % |2 i6 ^" b7 m( J  Y+ e
  10. import random4 U9 w. z. A0 ~  C' H" m
  11. 6 Y- T; e4 L/ q: X
  12. import sys,re% ~7 V; `0 e; R$ `5 q/ d
  13. ' h/ O7 y: H: m4 d
  14. from PIL import Image, ImageDraw,ImageFont( O6 g6 }6 U5 M

  15. ' R' {, u( j+ D' @, m
  16. """ 你的 APPID AK SK """
    ' v/ A' [/ c- }; }- P. a5 o7 E
  17. 4 @2 y5 ]% ^/ ]3 y
  18. APP_ID = 'xxx'0 o+ X9 M" J% U" F8 s( n5 x

  19. " x6 G8 E5 n2 c8 @
  20. API_KEY = 'xxx'
    3 t" [$ b# T4 ^+ p" d& ^& W
  21. 2 N2 B3 v  u& `# T5 ^, c0 S+ e% z
  22. SECRET_KEY = xxx'4 s  m8 G* j/ H& W
  23. : t. B% x4 X8 E# B  [
  24. client = AipOcr(APP_ID, API_KEY, SECRET_KEY)0 R- a8 A" X$ T2 H4 z# w# D& U
  25. 3 l9 o$ Y3 W/ m) R0 a* g" b
  26. #PROXY = "127.0.0.1:8118"$ I' u( {# q8 A

  27. ' ?8 D: X! Q0 K" C6 r2 F2 I
  28. chrome_options = webdriver.ChromeOptions()- n/ Y* p' J: J0 r0 D  n& D5 A
  29. 3 G3 D* y2 e6 U- w1 H2 d. [
  30. chrome_options.add_argument('--headless')+ w$ T* {5 ~* B/ w, l

  31. ' @$ J( |. s& B( s" D) V
  32. chrome_options.add_argument('--disable-gpu')
    - g6 M2 X& k4 f- _" {# O
  33. * H% c+ i8 y& k" }/ T
  34. #chrome_options.add_argument('--proxy-server=%s' % PROXY)( s& C/ D4 G" c7 Q

  35. 4 G4 u: i2 |; n, v$ y* D$ U9 t9 x2 G
  36. chrome_options.add_argument("--incognito")
    ) W% D1 W; ^8 ?4 B0 M8 L

  37. # ?9 Y3 S5 Y1 v5 d
  38. chrome_options.add_argument('--ignore-certificate-errors')2 L+ [/ b# P+ `, K; k

  39. $ ~& @* `: J" v: U7 g' {
  40. # Win
    , C. S( O6 j- e- Q4 T

  41. - ^* q8 Y" ~" J0 v4 \" l
  42. # chrome_options.add_argument("--log-level=3")" T. @  D4 j' |5 K5 r, h$ t3 S9 I
  43. ! H1 Q1 o" C2 N5 Z
  44. # chrome_options.add_argument("--disable-logging")8 h2 @. T% d' s6 v$ e0 c5 d
  45. - X1 M  P' T9 s' R6 o
  46. # chrome_options.add_argument("--disable-logging")8 E6 K2 S9 A* U" V" w

  47. ) k$ N0 L7 c! F4 Y
  48. #chrome_options.add_argument('--no-sandbox')+ Y5 t8 x/ ^3 H

  49. " o& v7 a8 l( f7 E7 R. k
  50. """ 读取图片 """2 \# X+ o' q  y

  51. , l1 }2 W6 Y  ~3 f, a- \5 M# Z' \
  52. def get_file_content(filePath):
    9 Y9 C$ A! {' D/ g5 H' t
  53. 1 w+ O+ @$ s+ o- u( m
  54. with open(filePath, 'rb') as fp:
    ) Y) m& {- n+ H8 G) j

  55. 1 X8 r" S1 z5 d' H5 I/ a
  56. return fp.read()2 h5 w" p% z  u

  57. / e+ W! s! A) ^" g7 T2 x
  58. driver = webdriver.Chrome('~/chromedriver',chrome_options=chrome_options)' E2 e% n' _  m% x6 \  M

  59. 4 A# E8 J: `: M8 {6 @* Q
  60. driver.set_window_size(1280, 727)
    : [! x' q; V& X3 ~' u
  61. " Q" m+ u: P& P5 @% L8 k% E
  62. driver.get("https://youlikehits.com/")
    3 p2 K/ Z1 H1 @' _( G8 s. K" I6 \

  63.   p5 M; l8 X" _. \: ?
  64. time.sleep(5)
    $ q2 \# k4 W* H8 p4 n
  65. ' P/ l# z' A( x2 O
  66. driver.find_element_by_id("username").send_keys('11111') #user
    # U! E1 B& J: ^# y7 K! Q

  67. ) d" T3 H4 \" H# U2 H" z% t
  68. driver.find_element_by_id("password").send_keys('111111') #password
    ) @* I  P. F2 n1 V4 j/ U
  69. 2 ~$ W+ z1 k( G  q
  70. driver.find_element_by_xpath("//input[@value='Login']").click()1 X, Z2 \! e' T6 b$ t# I, {( w
  71. . Z* D9 Y7 n4 T
  72. driver.get("https://youlikehits.com/youtubenew2.php")0 |: |1 K, T& }; K+ u% B1 e

  73. / I' X$ Z0 X$ _: S. O
  74. time.sleep(1)
    ) u5 _! M) s  S$ A5 m3 K
  75. 8 h$ }$ P5 Y* {5 I
  76. #Try Again
    7 B6 |% ?) p# L' u0 D7 i" \

  77. 1 X: M: p0 \% C0 K
  78. def checkRefresh(driver):! m! H% N4 J0 |5 W" t+ a
  79. % B  D# q) v* ~: [  N1 I0 B
  80.         try:/ f$ R& a3 `, s) w+ B1 {$ J$ l

  81. / U3 P9 |+ |5 C7 C  @3 q" E* O3 p
  82.                 Refresh = driver.find_element_by_id('loadmore')$ I7 |* S' M+ t- n1 i2 w. D' z

  83. ( x! p. q; c! G7 g+ z9 s
  84.                 Refresh.click()' C7 C% x* u; I  d# N3 z' ^8 G! |) ~
  85. ; R" j7 ]4 w* a# q# @1 |' f8 \
  86.                 driver.set_window_size(1280, 727)
    * G' k* m' g  X$ \) x) ^0 ^
  87. " v% G; @2 x0 Y6 c/ }2 K/ B+ `
  88.         except Exception as e:
    0 @9 O& ^2 w5 U2 @6 l) ?
  89. " d# ~) D. b2 `* m% t
  90.                 pass
    7 N+ i3 t& d) w6 }* c
  91. 9 ^, H% J0 S3 D$ X  {. ~
  92. def checkcaptcha(driver):" a- e# m5 I: @# J

  93. 1 M# a3 z" Y" n$ ]9 R% ?& a% d
  94.         try:
    5 C% B9 w) y* Q; c: s5 P

  95. 6 a  t) x  d" a& A7 B
  96.                 captcha = driver.find_element_by_id('captcha')  @! n. D2 U. h' w$ n% Q

  97. 4 D& G( t5 ^' v% D
  98.                 print driver.get_window_size()" ?% k0 D# g" @" j- f  k% j" _
  99. , s3 ~" K- i5 H
  100.                 time.sleep(2)
    2 p6 I' s8 r4 ]* m' Y! c4 u
  101. & ~7 H$ E; v- w" _
  102.                 driver.save_screenshot('/tmp/screenshot.png')
    # m, f- P% }+ w" q0 p7 {# B" v
  103. 5 ~- S9 \' T; l$ Y( A) z' ~
  104.                 im = Image.open('/tmp/screenshot.png')' ?* @3 g6 p6 K- |: ]# u4 b1 ]9 {+ {
  105. % l4 g* {/ s; K
  106.                 #取消headless模式
    % Z# A( \  ~3 e8 c- m" M9 @' z2 |
  107. ( _4 R% g$ X! t8 u
  108.                 #a = im.resize((1269, 610),Image.ANTIALIAS)
    2 g" B- ]3 g+ H$ a. T

  109. ' m5 s$ ~; m% C( O: A- U  ?' a* j) r
  110.                
    ( A% g9 J( t" B7 `

  111. 7 B) p7 {2 Y8 s
  112.                 #开启headless模式
    5 Q6 O. l, b7 s9 n. ^! f
  113. 8 L3 C/ R* V* C: a1 w
  114.                 a = im.resize((1269, 727),Image.ANTIALIAS)# M8 `1 D4 l( E2 `# ], q# H
  115. ! J9 L! i) d1 V  ]1 Z
  116.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")
    5 w7 j2 r% J5 `. ~' [4 W7 b
  117. $ L4 a% Z& n% Y) `9 [: ~
  118.                 left = element.location['x']
    ' M1 F2 K( B, `) \" d8 G- C4 v

  119. - k+ t( S3 [; D7 D
  120.                 top = element.location['y'], N+ m. [  _6 `/ X

  121. * Y; d- `- ?2 l1 E
  122.                 right = element.location['x'] + element.size['width']& x/ V2 R3 h. s. z1 {. U

  123.   w( W! \8 r, z+ v% v
  124.                 bottom = element.location['y'] + element.size['height']; N  N( K7 f' X) ^) i
  125. " f! Q0 g, j* c  S" g$ e' S- Y
  126.                
    ) E# q" e8 S; F/ T0 g4 f2 [
  127. : k* ~7 O! [; i) N# b1 l& f# E- P; e
  128.                 #element = driver.find_element_by_xpath("//div['#captcha']//img")2 f$ x* p" z0 D0 @4 b
  129. ( x* a# a, U! T2 u" X) |
  130.                 #driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']").get_attribute("src")$ m0 k0 @* J  `- c+ K# S

  131. 4 |9 Z+ {" @$ d1 u7 p9 s$ `: _
  132.                 element = driver.find_element_by_xpath("//div['#captcha']//img[@src='captchayt.php']")- t! p; m6 b- R, e( R3 T- W3 r

  133. - A' \7 U0 S+ [1 G
  134.                 a.crop((left, top, right, bottom)).save('/tmp/screenshot1.png')
    # X) N; b* ?( M- j, |
  135. ! ~0 m8 j6 u2 `7 O, G8 c
  136.                 image = get_file_content('/tmp/screenshot1.png')" _, w/ l3 x) ]9 P0 u3 j
  137. $ T. {' p  x3 W4 c$ _) f2 c- [
  138.                 a = client.basicGeneral(image)6 S2 k$ k( }' n* T9 I  `

  139. ) K% K5 \8 X! `: P0 G5 A9 O7 K
  140.                 print a, V3 c& r+ y1 k% X6 Q
  141. ( M$ j- ?9 c4 U6 l. Y
  142.                 yzm = re.sub(r'\xd7',r'*',a['words_result'][0]['words'])
    8 a, p+ ~! l1 Z- B; l1 m2 t

  143. . Z; {. I. P7 h0 a0 e% _: R5 ]8 d
  144.                 yzm = re.sub(r'\xf7',r'/',yzm)
    . p" W  Q1 ?2 [$ v* g/ C

  145. 6 ~0 Y5 T: n3 y. I6 {/ `7 u- Q4 K  v! M
  146.                 yzm = re.sub(r'x',r'*',yzm)
    9 D; I8 k: M2 q5 c! V  `7 P
  147. ! _8 T, I& A5 z4 }" u
  148.                 yzm = re.sub(r'X',r'*',yzm)
    5 k: w0 U! \( ~$ \4 t$ c

  149. , K) |. l. L6 q
  150.                 yzm = eval(yzm)
    1 |& E8 F, q- x- g5 F, Q
  151. + Y+ q1 J' G( J' O1 m2 g+ S1 G+ Q
  152.                 #yzm = eval(yzm.replace('x','*').replace('÷','/'))
    & R; N9 I6 u2 X5 L1 I: E
  153. / {; x9 Z/ r1 U8 v, N' a
  154.                 print '验证码: ' + str(yzm)
    ; L: u' x: R: S& D* p" f
  155. ) Q) _4 r! Q) O0 T
  156.                 driver.find_element_by_name('answer').send_keys(yzm)/ J; B6 H+ h7 D" o! W/ y, `; A
  157. ' a$ k; |( Q/ W& l* C
  158.                 driver.find_element_by_name('submit').click()
    5 U# g/ t# A( u: z1 \/ h
  159. ( B$ J. F; |, A0 N4 K
  160.                 time.sleep(3); F$ u5 Y, O( q- R1 i

  161. - [+ c3 c. P; v4 J' s. Y0 C
  162.                 return 1
    6 {) O9 L8 c; J$ i* |) B
  163. 1 m8 |  h5 K% _
  164.         except Exception as e:9 e/ J( P+ r& X$ x. K

  165. 0 B( ^: L3 I, s3 z( V& r  Q$ [  r
  166.                 return 0) d2 p% G( E9 A3 ^, m
  167. + t; g) t+ y9 i4 K7 m" K' a
  168. def followbutton(driver):/ \: a8 j' t) N2 p- Z
  169. 8 H5 o5 P# K$ A/ v8 M
  170.         try:! C: s8 B# N: Q$ V( h/ v6 _

  171. , }. H5 Y" U. t% E# J3 ?
  172.                 driver.switch_to_window(driver.window_handles[0])
    ! l# f( ]2 T, s! r' X$ d
  173. " I/ ?: ?8 a+ h, q/ e4 i8 N- i
  174.                 points = driver.find_element_by_id("currentpoints").text
    6 `; J! u  G2 [/ V* k0 u( X
  175. ! @& w( U2 F1 H+ [* V+ Z5 }
  176.                 driver.execute_script('return document.querySelector("a[class=followbutton]")').click()
    3 g, J1 |4 @. P5 g+ W' m, }
  177. ! s  |0 o6 I2 y5 k4 A
  178.                 driver.switch_to_window(driver.window_handles[1]). z( K- [6 x$ h; X/ y5 D5 O& J

  179. & C/ x: N5 w( o3 ]5 y. b
  180.                 VideoSource = ''.join(driver.page_source.split())
    ! Z9 K( m( m; _3 D  l

  181. 9 L. B: F, B7 G* g
  182.                 if VideoSource.find("This") < 100 and VideoSource.find("This") >= 0:
    - c' Q7 |3 O6 \' p: f+ X
  183. + _2 k' q* B0 B, ]: A# A
  184.                         print VideoSource
    $ A' @! K! h3 [! ^& M  H" h
  185. ( b* z6 q7 c3 @: ]1 Q8 k( f/ ]
  186.                         driver.switch_to_window(driver.window_handles[0])
    ( \$ l2 Y# \/ i2 [* \; _4 a/ D# }

  187. / W3 H: {  _3 y% w- `/ s# ^. [2 |
  188.                         print "Refresh..."7 B: [& N9 B) V

  189. / Q9 O2 f9 H6 c! n) I  M
  190.                         driver.get("https://youlikehits.com/youtubenew2.php")
    6 U! ^! W% r% c

  191. 0 |; I4 ]$ a, Q6 L$ x
  192.                         time.sleep(1)
    : G* L, d- q$ u- k% A

  193. 1 d9 c8 [  p) d
  194.                 return points1 v4 n0 h3 q4 y- ^* |5 P8 l

  195. - l1 Y! q3 I1 W7 u0 H
  196.         except Exception as e:+ Q- J& p& Y! K4 I) i4 H" l8 t
  197. ! d5 u4 K( w2 s  B9 D* i
  198.                 return 0
    $ w/ F, w5 u0 B' ?$ W1 Y( Y

  199. $ ^4 t6 S; C# Q, n
  200. for i in range(0,5000):5 r& |" k, K: [2 z7 }

  201. 7 |: D! d3 D' V" \# \
  202.         try:
    : q0 n, Z' ]8 ?

  203. + W. b. q) Q) b. A
  204.                 captcha = checkcaptcha(driver)4 W4 G# L$ C7 x" t6 I  M( s, k

  205. & U" g( o; K: o, C
  206.                 time.sleep(1)% n7 q* C3 j# |1 V

  207. $ {- Y( t( y% F& l' T" X' F/ T& j# N
  208.                 checkRefresh(driver)
    6 g/ ?% o9 t' ?
  209. 2 ?1 i$ w/ P9 u- w+ M! e
  210.                 points = followbutton(driver)
    / H% ?: X$ ?; P$ o8 L) Y
  211. % E, x5 k8 R8 c/ R/ o3 B
  212.                 time.sleep(65)
    ( L5 r* k/ d9 K2 a. n) P# R

  213. ( u  q/ q" \; G$ O# q
  214.                 driver.switch_to_window(driver.window_handles[0])) X# y. a9 m8 O# W
  215. 1 j" F$ e. e6 f1 h* m; {
  216.                 tmpp = driver.find_element_by_id("currentpoints").text( ~* ]' o' g, Y# I1 U
  217. 0 a: R* l/ _8 m, P- L" L
  218.                 print "points: " + str(tmpp)
    9 x' s( C5 g" t" n

  219. 7 _, ]* A% T4 J+ n& h$ m6 o# c" W
  220.                 if points == tmpp:' D( P  w1 T3 q5 |4 v  j, F

  221. ; F3 V1 i- h2 s& t; j
  222.                         print "Refresh..."
    & v' a( ^4 b( y% k

  223. 5 I; f6 G+ I! C  Q
  224.                         driver.get("https://youlikehits.com/youtubenew2.php")" t( ?$ l! i& l" G* [; K" M
  225. - t0 h/ d/ o7 ]5 ^. y6 C
  226.                         time.sleep(5)
    : X5 E" _! G/ U' x1 @1 x0 T" V
  227. ' Y) l/ E8 @$ `5 v9 x
  228.         except Exception as e:
    ' e$ ~! s# I+ F& S- D* z- k3 ~

  229. % e1 M6 t2 Q) U9 w
  230.                 driver.get("https://youlikehits.com/youtubenew2.php")
    ) R4 s6 P% O! n9 z0 |" b

  231. , n: U! j* C5 }7 h
  232.                 print 'error: ' + str(e)
    3 c6 t& V) P" E, Q

  233. 1 b4 i0 H) w- h! Y! ]' L' C  `
  234. driver.quit()
    : L9 m; s+ T  [. j4 h' ]
复制代码
& r3 O- v1 m5 p

: o% d. K! }9 `6 }7 K2 O, Z/ u$ X
因为headless ,可以挂在vps上跑。。 百度识别验证码正确率还是满高的。
( o: i, A! ~3 t9 |: p4 `
; _7 B. N$ Q0 _5 `: n6 G

评分

参与人数 1广告币 +20 收起 理由
小白龙 + 20

查看全部评分

相关帖子
回复

使用道具 举报

2

主题

25

广告币

80

积分

初级会员

积分
80

社区QQ达人

发表于 2018-8-29 06:59:13 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

32

广告币

102

积分

初级会员

积分
102

社区QQ达人

发表于 2018-8-30 10:17:14 | 显示全部楼层
跟我写的几乎一样,我也是百度验证码识别的,建议可以增加cookies保存和读取功能,省得每次都的输入,用户名和密码。他家是可以用cookies保持登录状态的。
回复 支持 反对

使用道具 举报

20

主题

36

广告币

255

积分

初级会员

积分
255
发表于 2018-9-1 10:16:57 | 显示全部楼层
自动在https://youlikehits.com/ 点击么?
回复 支持 反对

使用道具 举报

2

主题

172

广告币

254

积分

初级会员

积分
254

社区QQ达人

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

使用道具 举报

9

主题

1047

广告币

1543

积分

高级会员

积分
1543

社区QQ达人

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

使用道具 举报

176

主题

1185

广告币

4253

积分

超级版主

积分
4253

社区QQ达人

发表于 2018-10-18 15:11:47 | 显示全部楼层
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

点评

小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈  详情 回复 发表于 2018-10-19 21:57
缅怀骄阳
此ID(小白龙)仅限在论坛使用,其他平台发生的任何交易纠纷与本人无关,善用搜索远离骗子
回复 支持 反对

使用道具 举报

6

主题

303

广告币

310

积分

初级会员

积分
310
 楼主| 发表于 2018-10-19 21:57:02 来自手机 | 显示全部楼层
小白龙 发表于 2018-10-18 15:112 T4 n9 W8 p3 b. Q
用的是selenium库啊,我最近也写了一个小爬虫也用了selenium+pywin32模拟点击

8 `9 c' O- v) t% v% U小批量的还可以,多了实在是舍不得cpu。 并发也是个问题。卡卡的 娱乐还可以。个人观点。。哈哈' [9 J1 j/ l. l" `# b( o

) h0 P( l& r, Z- o: H
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-2 13:12 , Processed in 0.081470 second(s), 28 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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