不登录打开网页:

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,cookielib

username='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

python模拟自动登录网站(urllib2)的更多相关文章

  1. java浏览器控件jxbrowser(简单demo模拟自动登录与点击)

    写在前面: 老大让我写个脚本自动给他写dms有一段时间了,说实话当时不知道老大指的这个脚本是什么?毕竟是做web的,难道是写个数据库sql语句脚本吗?也就放在了一边.巧了,最近一个朋友说他之前写了个程 ...

  2. 利用Python模拟GitHub登录

    最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...

  3. QQ模拟自动登录实现

    QQ模拟自动登录实现 本篇文章主要介绍"QQ模拟自动登录实现(带验证码)",主要涉及到java 实现QQ自动登录(带验证码)方面的内容,对于java 实现QQ自动登录(带验证码)感 ...

  4. Java 扫描微信公众号二维码,关注并自动登录网站

    https://blog.csdn.net/qq_42851002/article/details/81327770 场景:用户扫描微信公众号的二维码,关注后自动登录网站,若已关注则直接登录. 逻辑: ...

  5. 吴裕雄--天生自然PYTHON学习笔记:python自动登录网站

    打开 www. 5 l eta . com 网站,如果己经通过某用户名进行了登录,那么先退出登录 . 登录该网站 的步骤一般如下 : ( 1 )单击右上角的“登录”按钮. ( 2 )先输入账号. ( ...

  6. python网络爬虫之使用scrapy自动登录网站

    前面曾经介绍过requests实现自动登录的方法.这里介绍下使用scrapy如何实现自动登录.还是以csdn网站为例. Scrapy使用FormRequest来登录并递交数据给服务器.只是带有额外的f ...

  7. 定向爬虫 - Python模拟新浪微博登录

    当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息. 模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容. 实现微博登录的方法有很多,一般我们在模 ...

  8. Python模拟校园网登录

    最近忙着实验室的项目,学习的时间相对较少.前一段时间刚开始接触python时,依葫芦画瓢照着写了一个爬虫,爬取了某个网站的图片.当看到一张张图片自动出现在电脑屏幕上时,有些小小成就感.我想大多数人开始 ...

  9. python 模拟豆瓣登录(豆瓣6.0)

    最近在学习python爬虫,看到网上有很多关于模拟豆瓣登录的例子,随意找了一个试了下,发现不能运行,对比了一下代码和豆瓣网站,发现原来是豆瓣网站做了修改,增加了反爬措施. 首先看下要模拟登录的网站: ...

随机推荐

  1. MVC源码分析 - Authorize授权过滤器

    从 上一篇 其实能看到, 程序执行的过滤器, 有四种 : 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某 ...

  2. dig命令详解

    dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 dig(选项)(参数) 选项 @<服务器地址>:指定进行域名解析的域名服务器: -b<ip地址>:当主机 ...

  3. 利用nginx解决跨域问题

    访问我的博客 前言 最近遇到了跨域问题,结合之前[微信支付开发本地接收异步通知回调]的经验,利用 Nginx 实现了跨域. 公司之前为了解决跨域问题,用的是 iFrame,反正对于只做后端的我而言,觉 ...

  4. java.rmi.server.ExportException: Port already in use: 1099; nested exception is

    现象 mac上tomcat启动时报错: java.rmi.server.ExportException: Port already in use: 1099; nested exception is. ...

  5. 动态绑定数据至Html Table

    学习或是开发asp.net程序,如果你很不喜欢使用GridView,DataList或是Repeater控件去显示来自数据库的数据,你完全可以使用html的table来完成.今天Insus.NET还让 ...

  6. 逆向工程生成的mybatis中mapper文件。mapper接口,实例化成对象

    逆向工程生成的mybatis中mapper文件中,*mapper文件只是接口,而不是类文件.但是却可以通过spring的容器获得实例. 例如: //1.获得mapper代理对象,从spring容器获得 ...

  7. MySQL数据库的配置

    一.配置MySQL数据库 MySQL的官网www.mysql.com 1.解压绿色版mysql,并改名为mysql5.7,如下图 对比一下下图5.6以前的版本,少data目录(存放数据)和my-def ...

  8. 常系数线性递推的第n项及前n项和 (Fibonacci数列,矩阵)

      (一)Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项的快速求法(不考虑高精度). 解法: 考虑1×2的矩阵[f[n-2],f[n-1]].根据fibon ...

  9. Unix环境高级编程:文件 IO 原子性 与 状态 共享

    参考 UnixUnix环境高级编程 第三章 文件IO 偏移共享 单进程单文件描述符 在只有一个进程时,打开一个文件,对该文件描述符进行写入操作后,后续的写入操作会在原来偏移的基础上进行,这样就可以实现 ...

  10. js formData图片上传(单图上传、多图上传)后台java

    单图上传 <div class="imgUp">     <label>头像单图</label>     <input type=&quo ...