跨语言社交网站模拟登录类库(imitate-login)
网站的登录是抓取某些网站的必须步骤,大多数情况我们都是使用一个真实的浏览器去提交我们的登录信息,但是在代码中嵌套浏览器不仅会带来性能损耗,还会带来崩溃的风险。因此就有了这个使用httpRequest来模拟登录的库imitate-login,目前仅有微博网页版和微博Wap版的实现,其它计划实现会根据项目关注度来决定(Star & fork)是否更新以及更新时间。
如果这个项目侵犯了您的权益,请及时与我联系(可通过留言或邮件)!我会在收到的一周内协商处理。
这个类库仅对外提供一个方法:
LoginResult Login(1: string userName, 2: string password, 3: LoginSite loginSite);
这个方法位于ImitateLogin的LoginHelper类中,使用之前需要先对其进行实例化。通过传入 用户名、密码以及登录的网站,返回一个包含登录结果状态、描述信息以及Cookies字典的类。
这个类库并没有提供对验证码的支持,微博可以通过设置登录保护来避免验证码的出现:
位于 设置->账号安全->登录保护
这个项目支持使用 Apache Thrift 来实现多语言环境下的RPC调用,首先安装Thrift,然后使用以下命令创建目标语言下的接口:
thrift --gen <language> ImitateLogin.thrift
将上面命令中的<language>
替换为你所使用的语言。然后在csharp端添加服务端得代码:
public void Start()
{
TServerSocket serverTransport = new TServerSocket(7901, 0, false);
Login.Processor processor = new Login.Processor(new LoginHelper());
TServer server = new TSimpleServer(processor, serverTransport);
Console.WriteLine("Starting server on port 7901 ..."); server.Serve();
}
然后在其它语言(例如JAVA)中实现客户端的方法:
TTransport transport = new TSocket("localhost", 7901);
transport.open();
TProtocol protocol = new TBinaryProtocol(transport);
Login.Client client = new Login.Client(protocol);
client.Login("username", "password", LoginSite.Weibo);
将上述语句中的 username 和 password 替换为真实用于登录的微博账户。
你可以在包含Mono或.Net Framework的环境下运行imitate-login类库。该类库里包含一个使用Gtk+创建的测试窗体程序,如果你希望使用它,需要额外安装 Gtk+ for Mono.
该类库已经完成的社交网站支持:
Weibo
WeiboWap
计划完成的支持:
Taobao
QQ
Facebook
Twitter
Google
计划支持部分会根据项目关注度来决定(Star & fork)是否更新以及更新时间。
如果这个项目侵犯了您的权益,请及时与我联系(可通过留言或邮件)!我会在收到的一周内协商处理。
本文来自The NewIdea,作者Carey Tzou 。
永久地址:
http://blog.tnidea.com/social-network-imitate-login.html