下面是小编为大家整理的一个常用的Python模拟登陆类,本文共10篇,仅供参考,大家一起来看看吧。

篇1:一个常用的Python模拟登陆类

作者:Cosven 字体:[增加 减小] 类型:

这篇文章主要分享的是一个常用的Python模拟登陆类,而且可以支持cookie保存,十分的实用,这里推荐给大家,有需要的小伙伴可以参考下,

代码非常简单,而且注释也很详细,这里就不多废话了

tools.py

# -*- coding:utf8 -*-‘‘‘# =============================================================================# FileName: tools.py# Desc: 模拟浏览器# Author: cosven# Email: yinshaowen241@gmail# HomePage: www.cosven# Version: 0.0.1# LastChange: -03-27 00:59:24# History:# =============================================================================‘‘‘ import urllibimport urllib2import cookielib class MyWeb: “”“ 模拟一个浏览器 ”“” def __init__(self): self.header = {‘Host‘: ‘music.163‘,‘Content-Type‘: “application/x-www-form-urlencoded; charset=UTF-8”,‘Referer‘: ‘music.163/song?id=26599525‘,“User-Agent”: “Opera/8.0 (Macintosh; PPC Mac OS X; U; en)” } self.cookie = cookielib.LWPCookieJar() self.cookie_support = urllib2.HTTPCookieProcessor(self.cookie) self.opener = urllib2.build_opener(self.cookie_support, urllib2.HTTPHandler) urllib2.install_opener(self.opener) def post(self, posturl, dictdata): “”“ 模拟post请求 :param string posturl: url地址 :param dict dictdata: 发送的数据 ”“” postdata = urllib.urlencode(dictdata) request = urllib2.Request(posturl, postdata, self.header) try:content = urllib2.urlopen(request)return content except Exception, e:print (“post:” + str(e))return None def get(self, url): “”“ 模拟get请求 :param url: url地址 :return content: 常使用read的方法来读取返回数据 :rtype : instance or None ”“” request = urllib2.Request(url, None, self.header) try:content = urllib2.urlopen(request)return content except Exception, e:print (“open:” + str(e))return None if __name__ == “__main__”: import hashlib web = MyWeb() url = ‘music.163/api/login/‘ data = { ‘username‘: ‘username‘, # email ‘password‘: hashlib.md5(‘password‘).hexdigest(), # password ‘rememberLogin‘: ‘true‘ } res = web.post(url, data) print res.read() # url_add = ‘music.163/api/playlist/manipulate/tracks‘ # data_add = { # ‘tracks‘: ‘26599525‘, # music id # ‘pid‘: ‘16199365‘, # playlist id # ‘trackIds‘: ‘[“26599525”]‘, # music id str # ‘op‘: ‘add‘ # opation # } # res_add = web.post(url_add, data_add) # print res_add.read() # 完了可以试着查看自己网易云音乐相应列表歌曲

以上就是本文给大家分享的代码了,希望大家能够喜欢,也希望能够对大家学习Python有所帮助,

篇2:python模拟登陆Tom邮箱示例

最近更 新

python文件和目录操作方法大全(含实例)

python将多个文本文件合并为一个文本的代

pip 错误unused-command-line-argument-h

简单文件操作python 修改文件指定行的方法

videocapture库制作python视频高速传输程

Python 正则表达式操作指南

python插入排序算法的实现代码

python中精确输出JSON浮点数的方法

Python splitlines使用技巧

python 获取et和excel的版本号

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

篇3:python模拟登陆阿里妈妈生成商品推广链接

最近更 新

python连接mysql调用存储过程示例

Python模块学习filecmp 文件比较

python判断、获取一张图片主色调的2个实例

python算法学习之桶排序算法实例(分块排序

Python tempfile模块学习笔记(临时文件)

python实现数通设备tftp备份配置文件示例

python使用xauth方式登录饭否网然后发消息

python中使用sys模板和logging模块获取行

python类定义的讲解

Python 变量类型及命名规则介绍

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

篇4:linux登陆认证模拟Linux

一个很简陋的认证过程,通过用户名(或用户ID)和密码明文验证该用户是否可以登陆系统, just for fun,没有时间完善了,不过应该比较容易扩充和增加其他的功能。 注意链接需要制定-lcrypt。如果需要一般用户同样可以使用,需要将程序setuid(需要验证/etc/s

一个很简陋的认证过程,通过用户名(或用户ID)和密码明文验证该用户是否可以登陆系统。

just for fun,没有时间完善了,不过应该比较容易扩充和增加其他的功能。

注意链接需要制定-lcrypt。如果需要一般用户同样可以使用,需要将程序setuid(需要验证/etc/shadow):

# chown root:root checkpasswd

# chmod 4755 checkpasswd

usage:

$ checkpasswd --user testuser --password testpassword --verbose

$ checkpasswd -i 1001 -p empty_passwd -v

#define _XOPEN_SOURCE

#define _GNU_SOURCE

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef enum{

AUTH_TYPE_AUTO,

AUTH_TYPE_DES,

AUTH_TYPE_MD5,

NR_AUTH_TYPE

}auth_type_t;

typedef enum{

AUTH_INFO_AUTO,

AUTH_INFO_PASSWD,

AUTH_INFO_SHADOW,

NR_AUTH_INFO

}auth_info_t;

typedef struct login_info{

char* login; /* login name */

char* cname; /* cname */

char* group;

char* passwd; /* plain text password */

uid_t uid;

gid_t gid;

uint16_t auth_type;

uint16_t auth_info;

}login_info_t;

static login_info_t login_info = {

NULL, NULL, NULL, NULL, -1, -1, 0, 0,

};

static int verbose_flag;

/**

* option for getopt_long

*/

static const struct option opt_options[] = {

{“user”, 1, 0, 'n'},

{“uid”, 1, 0, 'u'},

{“password”, 1, 0, 'p'},

{“help”, 0, 0, '?'},

{“version”, 0, 0, 'V'},

{“verbose”, 0, 0, 'v'},

{0, 0, 0, 0},

};

static void help(void)

{

const struct option* o;

for(o = &opt_options[0]; o && o->name; o++){

fprintf(stderr, “%sn”, o->name);

}

fprintf(stderr, “n”);

}

static void version(void)

{

fprintf(stderr, “version: 0.0.1n”);

}

int verbose(const char* fmt, ...)

{

va_list ap;

int n;

if(!verbose_flag)

return 0;

va_start(ap, fmt);

n = vfprintf(stderr, fmt, ap);

va_end(ap);

return 0;

}

int auth_des(const char* plain_text, const char* key_compare)

{

char* des_key;

char salt[2] = ;

if(strlen(key_compare) < 2)

return -1;

strncpy(salt, key_compare, 2);

des_key = crypt(plain_text, salt);

if(strcmp(des_key, key_compare) == 0)

return 0;

verbose(“auth DES: non-match(Wrong) password!n”);

return -1;

}

/**

* need GNU libc 2.x or higher

*/

int auth_md5(const char* plain_text, const char* key_compare)

{

char* md5_key;

const char* p;

char salt[12] = ;

int n = 0;

if(strlen(key_compare) < 3)

return -1;

if(strncmp(key_compare, “$”, 3) != 0){ /* not start with “$”, please confirm

to /etc/shadow file */

verbose(“auth MD5: not start with ”$“n”);

return -1;

}

p = key_compare + 3;

while(*p++){

++n;

if(!p){

verbose(“auth MD5: invalid shadowed MD5 password!n”);

return -1; /* invalid shadowed md5 password */

}

if(n > 8){

break;

}

if(*p == '$'){

break;

}

}

strncpy(salt, key_compare, n + 3);

md5_key = crypt(plain_text, salt);

if(strcmp(md5_key, key_compare) == 0)

return 0;

verbose(“auth MD5, non-match(Wrong) password!n”);

return -1;

}

int check_shadowed_passwd(login_info_t* login_info)

{

struct passwd* pw;

struct spwd* spw;

if(login_info->login){

spw = getspnam(login_info->login);

}else if(login_info->uid >= 0){

pw = getpwuid(login_info->uid);

if(!pw){

verbose(“getpwuid [%d] failed, error: %sn”, login_info->uid,

strerror(errno));

return -1;

}

login_info->login = pw->pw_name;

spw = getspnam(pw->pw_name);

}else{

return -1;

}

if(!spw){

fprintf(stderr, “unable to read shadow passwd info: %sn”,

strerror(errno));

return -1;

}

if(login_info->auth_type == AUTH_TYPE_AUTO){

if(strncmp(spw->sp_pwdp, “$”, 3) == 0){ /* GNU extension, md5 used */

return auth_md5(login_info->passwd, spw->sp_pwdp);

}else{

return auth_des(login_info->passwd, spw->sp_pwdp);

}

}else if(login_info->auth_type == AUTH_TYPE_DES){

return auth_des(login_info->passwd, spw->sp_pwdp);

}else if(login_info->auth_type == AUTH_TYPE_MD5){

return auth_md5(login_info->passwd, spw->sp_pwdp);

}else{

verbose(“unknown auth type: %dn”, login_info->auth_type);

return -1;

}

}

/**

* checkpasswd

*/

int check_passwd(login_info_t* login_info)

{

struct passwd* pw;

if(login_info->login){

pw = getpwnam(login_info->login);

if(!pw){

verbose(“getpwnam [%s] failed, error: %sn”, login_info->login,

strerror(errno));

return -1;

}

login_info->uid = pw->pw_uid;

}else if(login_info->uid >= 0){

pw = getpwuid(login_info->uid);

if(!pw){

verbose(“getpwuid [%d] failed, error: %sn”, login_info->uid,

strerror(errno));

return -1;

}

login_info->login = pw->pw_name;

}else{

return -1;

}

if(!login_info->passwd){

verbose(“no password specified!n”);

return -1;

}

if(login_info->auth_info == AUTH_INFO_AUTO){

if(strlen(pw->pw_passwd) < 2){

if(strcmp(pw->pw_passwd, “x”) == 0){ /* shadow password used */

return check_shadowed_passwd(login_info);

}else{

return -1;

}

}

return auth_des(login_info->passwd, pw->pw_passwd);

}else if(login_info->auth_info == AUTH_INFO_PASSWD){

return auth_des(login_info->passwd, pw->pw_passwd);

}else if(login_info->auth_info == AUTH_INFO_SHADOW){

return check_shadowed_passwd(login_info);

}else{

verbose(“unknown auth info: %dn”, login_info->auth_info);

return -1;

}

}

void handle_args(int argc, char* argv[])

{

int ch;

int option_index;

while((ch = getopt_long(argc, argv, “u:i:p:Vvh”, opt_options, &option_index)) != -1){

switch(ch){

case 'u':

login_info.login = optarg;

break;

case 'i':

login_info.uid = atoi(optarg);

break;

case 'p':

login_info.passwd = optarg;

break;

case 'h':

help;

exit(0);

break;

case 'V':

version();

exit(0);

break;

case 'v':

verbose_flag = 1;

break;

case '?':

default:

help();

exit(1);

break;

}

}

if(!login_info.passwd){

fprintf(stderr, “please specifie login passwordn”);

help();

exit(1);

}

if(!login_info.login && !login_info.uid){

fprintf(stderr, “please specifie either login name or user idn”);

help();

exit(1);

}

}

int main(int argc, char* argv[])

{

int ret;

const char seperator[] =

“==========================================================================================n”;

int retcode = 1;

handle_args(argc, argv);

printf(seperator);

ret = check_passwd(&login_info);

if(ret < 0){

fprintf(stderr, “3[1;31mauthentication failed for user: ”

“[%s], uid[%d], password: [%s]3[mn”,

login_info.login, login_info.uid, login_info.passwd);

goto quit;

}else if(ret == 0){

printf(“3[1;32mauthenticated token suclearcase/” target=“_blank” >ccessfully, user: “

”[%s], uid: [%d]3[mn“,

login_info.login, login_info.uid);

retcode = 0;

}else{

assert(0);

retcode = -1;

}

quit:

printf(seperator);

exit(retcode);

}

原文转自:www.ltesting

篇5:Python定义类方法

和属性类似,方法也分实例方法和类方法,

在class中定义的全部是实例方法,实例方法第一个参数self是实例本身。

要在class中定义类方法,需要这么写:

class Person(object): count = 0 @classmethod def how_many(cls): return cls.count def __init__(self, name): self.name = name Person.count = Person.count + 1print Person.how_many()p1 = Person('Bob')print Person.how_many()

通过标记一个 @classmethod,该方法将绑定到Person类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为cls,上面的cls.count实际上相当于Person.count,

因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。

任务

如果将类属性count改为私有属性__count,则外部无法读取__score,但可以通过一个类方法获取,请编写类方法获得__count值。

?不会了怎么办

注意类方法需要添加 @classmethod

参考代码:

class Person(object): __count = 0 @classmethod def how_many(cls): return cls.__count def __init__(self, name): self.name = name Person.__count = Person.__count + 1print Person.how_many()p1 = Person('Bob')print Person.how_many()

篇6:Python简单日志处理类

这篇文章主要介绍了Python简单日志处理类分享,本文直接给出实现代码,需要的朋友可以参考下

简单的一个python日志处理类

代码如下:

#/usr/bin/python

#coding=utf-8

import time,types

class logsys:

def __init__(self, project, logfilename = ‘sys_log.txt‘):

self.project = project

self.logfilename = logfilename

def get_log_time(self):

return time.strftime(”%Y-%m-%d %X“, time.localtime)

def write2file(self, *formart):

s = self.formart_string(*formart)

if s:

encoding = ‘utf8‘

ut = open(self.logfilename, ‘a+‘)

out.write(s + ”n“)

out.close()

else:

pass

def formart_string(self, *formart):

string = ‘‘

encoding = ‘utf8‘

for str in formart:

if not type(str) in [types.UnicodeType, types.StringTypes, types.StringType]:

s = repr(str)

else:

s = str

if type(s) == type(u‘‘):

string += s.encode(encoding) + ”t“

else:

string += s + ”t"

return string

def w(self,notice,*formart):

self.write2file(self.get_log_time(), ‘[‘ + notice + ‘]‘, self.project, *formart)

篇7:Python:模拟linux命令cat

模拟linux的cat命令,打印从命令行输入的文件名

#!/usr/bin/python#Filename:cat.pyhelpString = '''This program prints files to the standard output.Any number of files can be specified.Options include:--version : Prints the version number--help : Display this help'''import sysdef readfile(filename): '''Print a file to the standard output.''' f = file(filename) while True: line = f.readline() if len(line) == 0:break print line, f.close()#Script. start from hereif len(sys.argv) < 2: print 'No action specified.' sys.exit()if sys.argv[1].startswith('--'): ption = sys.argv[1][2:] if ption == 'version' or ption == 'v': print 'Version 1.2' elif ption == 'help' or ption == 'h': print helpString else: print 'Unknown option.' sys.exit()else: for filename in sys.argv[1:]: readfile(filename)print 'Done'

篇8:Python SQLite3数据库操作类

-04-04Python删除指定目录下过期文件的2个脚本分享

2014-01-01paramiko模块安装和使用(远程登录服务器)

-11-11python线程池的实现实例

2014-01-01python实现人人网登录示例分享

2014-04-04Python设计模式之观察者模式实例

-05-05400多行Python代码实现了一个FTP服务器

-09-09Python 字符串定义

2013-08-08pytyon 带有重复的全排列

2014-04-0435个Python编程小技巧

2014-06-06python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、Beau

篇9:Python SQLite3数据库操作类

最近更 新

python异步任务队列示例

使用python实现baidu hi自动登录的代码

Python 命令行非阻塞输入的小例子

python 布尔操作实现代码

Python continue语句用法实例

Python 过滤字符串的技巧,map与itertools

Python中文件遍历的两种方法

python获取豆瓣电影简介代码分享

wxpython 最小化到托盘与欢迎图片的实现方

python文件和目录操作函数小结

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 字符串split的用法分享

python 文件和路径操作函数小结

篇10:Python实现类继承实例

2012-05-05ssh批量登录并执行命令的python实现代码

2013-02-02python登录QQ邮箱发信的实现代码

2013-03-03python中定义结构体的方法

2012-08-08Python模块学习filecmp 文件比较

2014-02-02python实现ftp客户端示例分享

2014-04-04Python操作sqlite3快速、安全插入数据(防注入)的实例

2014-05-05Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)

2013-12-12python批量修改文件后缀示例代码分享

2013-12-12python获取beautifulphoto随机某图片代码实例

2014-02-02python基础教程之udp端口扫描

更多推荐

一个常用的Python模拟登陆类