python模拟自动登录网站(urllib2)

news/2024/5/20 13:20:57/文章来源:https://blog.csdn.net/weixin_33932129/article/details/85816433

 不登录打开网页:

import urllib2
request = urllib2.Request('http://www.baidu.com')
response = urllib2.urlopen(request).read()
print response

 保存网页图片(https://www.baidu.com/img/bd_logo1.png):

picurl = 'https://www.baidu.com/img/bd_logo1.png' #定义图片的url地址
req = urllib2.Request(picurl)
data = urllib2.urlopen(req).read()file=open('d:\\zaa.jpg','wb') #将图片保存为名为zaa.jpg的图片
file.write(data)
file.flush()
file.close()

 

模拟自动登录zabbix:

import urllib2,cookielib,urllib
#定义登录地址
login_url = 'http://10.16.2.4/zabbix/index.php'
#定义登录所需要用的信息,如用户名、密码等,详见下图,使用urllib进行编码
login_data = urllib.urlencode({"name": 'admin',"password": 'password',"autologin": 1,"enter": "Sign in"})#设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie  
cj = cookielib.CookieJar() #获取Cookiejar对象(存在本机的cookie消息)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #自定义opener,并将opener跟CookieJar对象绑定
urllib2.install_opener(opener) #安装opener,此后调用urlopen()时都会使用安装过的opener对象
response=opener.open(login_url,login_data).read() #访问登录页,自动带着cookie信息
print response #返回登陆后的页面源代码

zabbix登录页面内容:

 

有的页面登录时会post到其他页面,查看登录页面的form中的action地址,可能需要构造header头信息:

#发送头信息
headers = {'Referer':'http://10.16.2.4/zabbix/index.php','Host':'10.16.2.4', #可以不要,一般两项就可以'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'
}
#定义登录地址
login_url = 'http://10.16.2.4/zabbix/index.php'
#定义登录所需要用的信息,如用户名、密码等,使用urllib进行编码
login_data = urllib.urlencode({"name": 'admin',"password": 'password',"autologin": 1,"enter": "Sign in"})#设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie  
cj = cookielib.CookieJar() #获取Cookiejar对象(存在本机的cookie消息)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #自定义opener,并将opener跟CookieJar对象绑定
urllib2.install_opener(opener) #安装opener,此后调用urlopen()时都会使用安装过的opener对象

urllib2.urlopen(login_url)#打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功) 
#通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程 req=urllib2.Request(post_url,login_data,headers) #post_url需要在请求过程中自己得出 response=urllib2.urlopen(req)
print response.read()
response.close()

在ie中手动登录后,可以看到相应的header头信息,如下:

 

模拟登录piao.x.com(先使用chrome抓包,输入一个错误的账号密码)

import urllib,urllib2,cookielibusername='name'
password='pass'
loginurl='http://piao.x.com/loginHandler.ashx' #此为在登录过程中post到的页面cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.8.1000 Chrome/30.0.1599.101 Safari/537.36','Referer':'http://piao.x.com/login/login','Content-Type':'text/html'}
for key in headers: #增加多个header
    opener.addheaders.append((key,headers[key]))data = urllib.urlencode({"username":username,"password":password}) #使用google可以看到此处的用户密码为明文发送,格式为username=username&password=password,如下图所示。
opener.open(loginurl,data)
print opener.open('http://piao.x.com/#dGlja2V0').read() #登录成功后可以打开其他页面。

Form Data部分为需要Post到Server的参数,piao登录需要Post的参数是2个,zabbix登录需要Post的参数是4个 。

piao login:

 zabbix login:

如上图所示,查看Respons Headers部分,可以看到其中的Set-Cookie,该cookie可以在后面的站内访问使用,使用urllib2也可以看到该部分内容:

import cookielib,urllib,urllib2
zabbix_url="http://10.16.2.4/zabbix/index.php"
zabbix_header = {"Content-Type":"application/json"}
zabbix_user   = "admin"
zabbix_pass   = "password"cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
data = urllib.urlencode({"name":zabbix_user,"password":zabbix_pass,'form_refresh':1,'enter':'Sign in'}) 
response = opener.open(zabbix_url,data)
print response.headers #打印Server 的response header头部分内容:
返回: Date: Wed,
25 May 2016 08:07:17 GMT Server: Apache/2.4.6 (CentOS) PHP/5.4.16 X-Powered-By: PHP/5.4.16 Set-Cookie: zbx_sessionid=bbc97766e8c132a56f2d016a6963219a Set-Cookie: PHPSESSID=v8sno86fnc19iqgltipae0l2d2; path=/zabbix/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=v8sno86fnc19iqgltipae0l2d2; path=/zabbix/ Set-Cookie: PHPSESSID=v8sno86fnc19iqgltipae0l2d2; path=/zabbix/ Set-Cookie: PHPSESSID=v8sno86fnc19iqgltipae0l2d2; path=/zabbix/ Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8

在urllib2中不再使用用户名密码,直接使用上面得到的cookie访问站内页面:

import cookielib,urllib,urllib2
zabbix_url="http://10.16.2.4/zabbix/index.php"
zabbix_header = {"Content-Type":"application/json"}

cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

zabbix_header = {'cookie':'zbx_sessionid=bbc97766e8c132a56f2d016a6963219a'} #使用前面得到的cookie
for key in zabbix_header: #增加多个header,把cookie放到header中,访问server时使用该cookie
    opener.addheaders.append((key,zabbix_header[key]))

print opener.open('http://10.16.2.4/zabbix/tr_status.php?fullscreen=0&groupid=0&hostid=0&show_triggers=1&ack_status=1&show_events=1&show_severity=0&txt_select=&application=&inventory%5B0%5D%5Bfield%5D=type&inventory%5B0%5D%5Bvalue%5D=&filter_set=Filter').read() #该页面可以直接访问,不再需要使用用户名密码等信息。

 

参考:http://www.cnblogs.com/sysu-blackbear/p/3629770.html 保存cookie到本地文件

      http://www.2cto.com/kf/201401/275152.html 详细,带有http具体访问过程

     http://www.jb51.net/article/63759.htm 简明

    http://www.blogjava.net/hongqiang/archive/2012/08/01/384552.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_755005.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何一步步构建大中型网站架构

(转载自http://kb.cnblogs.com/page/99549/) 之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型,我们可以从中获取很多有关…

5 个鲜为人知的黑科技网站,强大到不敢想象

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏 原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库…

大型网站架构系列:负载均衡详解(下)

大型网站架构系列:负载均衡详解(下): " 《大型网站架构系列:负载均衡详解(上)》 一、软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或…

团队-爬虫电影网站-最终程序

托管平台地址:https://gitee.com/w789369/PaChong/tree/master 小组名称:简单 小组成员合照:无 程序运行方法:python 程序运行示例及运行结果:转载于:https://www.cnblogs.com/lws1111/p/7944180.html

网站用户的注册与管理

django-registration安装与设置 执行命令 pip install django-registration此次frameword 会运用django原有的auth架构 在默认的情况下,django-registration只需要在setting.py中设置一个常数,用来指定启动码的天数, ACCOUNT_ACTIVATION_DAYS…

网站代码用什么打开_网站404页面有什么用?

在网站优化过程中,有很多知识点。今天我们要谈的是404页,404页在访问客户端的页面时,服务器出现无法正常显示的信息,或者服务器无法应对,客户输入错误的链接也出现404页但是,朋友们发现很多网站都制作了404…

项目案例:部署社交网站

前言:本次项目是搭建一套动态网站服务器平台,在上面运行社交网站(例如:人人网,开心网,天涯论坛)。相关知识点在前面的课程中都有所涉及,今天的实验就是一个综合运用,体现…

首次配置网站报错原因?

首次搭建自己的网站,在本地wamp服务上没有任何错误,但是同步到阿里云上就报错了,是什么原因呢? 原来,首次搭建网站要给予某些目录权限,否则权限无法运行,肯定报错的。我是把Application下的目录…

Spring cloud实战 从零开始一个简单搜索网站_Hystrix断路由的实现(三)

上文已经完成了一个简单的 浏览器 到 Client 到CSDN端的通路 我们的架构是每个博客网址为一个单独的组件, 这里为了方便直接先用CSDN 那个组件复制下 我这里改成 SDN 修改下 application.properties 端口记得改 eureka.client.serviceUrl.defaultZonehttp://loc…

直面春招!java相关技术网站

面试进大厂必问知识点内容 细节见真知:计算向数据移动、而非数据向计算移动 redis的5大Value类型解析 redis实现活跃用户/用户统计 redis实现秒杀/抢购 redis实现排行榜/评论列表 redis实现推荐系统/抽奖/商品详情页 linux系统的支持: fork、 copy on write redis的持久…

看完全都会了!java语言程序设计与数据结构配套网站

微服务是什么 微服务起源于2005年Peter Rodgers博士在云端运算博览会提出的微Web服务(Micro-Web-Service),根本思想类似于Unix的管道设计理念。2014年,由Martin Fowler 与 James Lewis共同提出了微服务的概念,定义了微服务架构风格是一种通过…

JEECG-P3首个开源插件诞生!CMS网站插件 Jeecg-p3-biz-cms1.0版本发布!

为什么80%的码农都做不了架构师?>>> Jeecg-P3-Biz-Cms ( JEECG 首个微服务插件,支持小程序的CMS系统) 是基于JEECG-P3 微服务框架开发的CMS建站系统,可轻量级集成进jeecg系统,定制各类网站模…

【必看】分析各大招聘网站

目前市场上的招聘网站鱼龙混杂,人力资源市场这块大蛋糕谁都想分一块。工作对于每个人来说都是人生中的一件大事,所以如何选择一个适合自己的经验水平等各方面的正规招聘网站就显得尤为重要,那么今天小编就从客观角度,为大家分析市…

一个基于 SpringBoot 开源的小说和漫画在线阅读网站,简洁大方 !强烈推荐 !...

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏 原创 | Java 2020 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库…

解决.net网站打开出现编译器错误消息: CS0016: 未能写入输出文件问题

今天魅力网络在win2008上搭建一个wap的网站程序是asp.net的,发现打开后无法显示,asp的网站可以打开,但asp.net的还是打不开,点基本设置那测试权限了通过了照样打不开,iis的asp.net组件都已经安装了啊,为什么…

IIS安装网站安装发布流程

1.安装IIS打开控制面板---程序和功能选择启用或关闭Windows功能2. 注册IIS因为我们是先安装的VS,后安装的IIS,所以需要将IIS注册进VS中,具体方法如下:在运行中输入“cmd”,回车进入Dos界面上面命令的意思是进入到C:\Windows\Micro…

如何快速实现一个基于Nginx网站的监控场景

一切从应用服务监控说起 小明所在的一家小型互联网创业公司一直将应用运行在阿里云上。该应用采用通用的分布式 NginxApp 架构为用户提供电商数据统计的 webservice 服务。应用运行至今除偶发各类 Bug,性能问题以外,情况还算良好。 undefined 最近&#…

【转载】如何查看自己网站的搜索引擎收录量和索引量

针对于个人站长或者企业站长而言,一般都非常关注自己网站的收录情况以及索引量信息,针对于新上线的网站,搜索引擎一般都还会给予新站保护期进行保护。其实如果要查看自己网站的收录量以及索引量等,可以注册百度站长平台、搜狗站长…

【转载】通过百度站长平台查看网站搜索流量及关键字

无论是个人站还是企业站,都希望网站内容丰富后,网上用户可以通过搜索引擎搜索到网站的内容信息,其实如果站长已经入住了百度站长平台,则我们可以通过百度站长平台的数据监控功能中的查看流量和关键词的菜单来查看具体多少用户通过…

【转载】通过搜狗站长平台查看网站的搜狗流量及搜索关键字

无论是个人站还是企业站,都希望网站内容丰富后,网上用户可以通过搜索引擎搜索到网站的内容信息,其实如果站长已经入住了搜狗站长平台,则可以通过搜狗站长平台的数据监控功能中的查看流量和关键词的菜单来查看具体多少用户通过搜狗…