在Windows工作的时候,经常会用迅雷下载东西,如果速度慢或者没资源,尤其是一些比较冷门的视频,迅雷的VIP会员服务总能够帮上大忙。后来无意间发现了有个“迅雷VIP账号获取器”的软件,可以获取一些临时的VIP账号供使用,这可是个好东西,因为开通迅雷会员虽然不贵,但是我又不经常下载,所以老感觉有点浪费,而有了这个之后,我随时下点东西都可以免费用了。

最近转移到了Mac上,而Mac也有迅雷,但那个账号获取器是exe的,不能在Mac运行。本以为获取器的构造会很复杂,谁知道,经过抓包研究,发现那个账号获取器的原理极其简单,说白了,就是一个简单的爬虫,以下这两个网站提供账号,它就到相应的抓取账号而已:
http://yunbo.xinjipin.com/
简单的迅雷VIP账号获取器.pnghttp://www.fenxs.com

据此,我也用Python简单写了一个,主要是方便我在Mac使用。读者如果有需要,也可以下载使用,代码兼容2.x和3.x的版本。主要的库是requests和re,pandas和sys的使用只不过是为了更加人性化。本来想用Tkinter写一个简单的GUI的,但是想想看,还是没必要了~~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# -*- coding:utf-8 -*-
'''
2016.01.21更新:修改了正则表达式的写法,使得更加通用;增加了一个账号来源。
'''
import requests as rq
import re
 
def get1():
    source = 'http://yunbo.xinjipin.com/articlelist/?33.html'
    web = rq.get(source).text
    url = re.findall('<li><p><a href=\"(.*?)\" title=', web)[0]
    web = rq.get('http://yunbo.xinjipin.com%s'%url)
    web.encoding = 'gb2312'
    web = web.text
    return re.findall(u'迅雷.*?([a-zA-z0-9\:]+?)[密码]+?([a-zA-z0-9]+?)</div>', web)
 
def get2():
    source = 'http://www.fenxs.com'
    web = rq.get(source).text
    url = re.findall(u'<h2><a:0003 href=\"(.*?)\" title=.*?迅雷会员账号分享.*?</a:0003></h2>', web)[0]
    web = rq.get(url).text
    return re.findall(u'迅雷.*?([a-zA-z0-9\:]+?)[密码]+?([a-zA-z0-9]+?)<br />', web)
 
def get3():
    source = 'http://xlfans.com'
    web = rq.get(source).text
    url = re.findall(u'<h2><a:0005 href=\"(.*?)\" title=.*?迅雷会员账号分享.*?</a:0005></h2>', web)[0]
    web = rq.get(url).text
    return re.findall(u'迅雷.*?([a-zA-z0-9\:]+?)[密码]+?([a-zA-z0-9]+?)<br />', web)
 
if __name__ == '__main__':
    import pandas as pd #方便输出显示
    import sys #判断系统版本
 
    print u'\n============简单的迅雷账号获取器============\n           By http://spaces.ac.cn\n'
    while True:
        if sys.version_info[0] < 3:
            s = raw_input(u'请选择数据源(输入s1或s2或s3,输入其他则退出): ')
        else:
            s = input(u'请选择数据源(输入s1或s2或s3,输入其他则退出): ')
        if s == 's1':
            print pd.DataFrame(get1(), columns=[u'账号', u'密码'])
        elif s == 's2':
            print pd.DataFrame(get2(), columns=[u'账号', u'密码'])
        elif s == 's3':
            print pd.DataFrame(get3(), columns=[u'账号', u'密码'])
        else:
            break

转载到请包括本文地址:https://spaces.ac.cn/archives/3594/

如果您觉得本文还不错,欢迎点击下面的按钮对博主进行打赏。打赏并非要从中获得收益,而是希望知道有多少人曾在科学空间驻足。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!