如何用php网页post登陆工具,直接使用POST方法登录网站

news/2024/5/14 11:13:37/文章来源:https://blog.csdn.net/weixin_33788825/article/details/115967159

浏览器在 POST 数据之后能够自动登录,那么我能不能在代码中直接模拟这个过程呢?

于是我设定了这样的一个流程

1. 设置浏览器的 headers, 设置请求等

2. 使用 httpfox 工具获取post data

3. 将post data 写下来并进行编码

4. 携带 headers 和 data 等信息进行网页请求

这里还是将获取post data 的过程截图出来,首先是登陆界面的网址:http://www.lvye.org/user.php

我们来看看headers和post data

8b06dfe7064ae44bf985942463ca1aba.png

大家可以看到,这里在post的后面还有一个url,这个url很重要,真的很重要,它就是的发送数据的真正网址

7d1d915cf6249a25133ee52df69cc469.png

好了,这里的post data 也不是很多,我打算把它全部写下去,于是,我写了这样的代码

#!/usr/bin/env python

# -*- coding:UTF-8 -*-

'''

使用post直接登陆

'''

import urllib

import urllib2

url = "http://www.lvye.org/user.php"

user_agent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0"

referer = "http://www.lvye.org/user.php"

host = "www.lvye.org"

headers = {'User-Agent':user_agent,

'Referer':referer,

'Host':host}

data = {'uname':'xxxxxxxxxxx',

'pass': 'xxxxxxxxxx',

'op': 'login',

'xoops_redirect':''}

post_data = urllib.urlencode(data)

request = urllib2.Request(url,headers=headers)

response = urllib2.urlopen(request,post_data)

print response.read()

然后我满心欢喜的等待输出结果......

b32af48d228fc0c491f1bf69fb4ce563.png

这个页面源码是什么鬼,跟我们前面直接使用cookies获取到的页面源码不一样啊,为什么呢?难道我们的程序出错了吗?

其实并没有,我们的程序已经达到我我们想要的效果,它出现了一个我已经登陆的提示,就是图中框出来的那部分,但这又是为什么呢,而且这些字眼我好像在哪里看到过,为了找出这个原因,我又去重新登陆了一次

81d6abe9ac376ab29e3e872ff8735908.png

我们看到网址还是原来的网址,但是界面却是这样的,而且,这里的文字不就是跟源码里面的文字一样吗,那为什么会出现这样的情况呢?

我们知道当你输入用户名密码登陆一个网站的时候,页面会自动跳转到网站的主页或者其他的网页,总之不会停留在登陆的界面,这在浏览器中很容易实现,但是在爬虫代码中就很难实现,因为一发生跳转就是两个界面,也就是两个不同的url,但是在程序中不可能自动帮你跳转,所以必须要进行两次urlopen()操作,那我就在代码中进行两次urlopen()操作不行吗?来实践看看吧

由于 data 是发送给登陆界面的数据(前面已经讲解了怎么找post data 里面说有找对应的url的),所以我们在打开另一个url时不需要再携带data 信息了,只要在前面那段代码的基础上加上两句话就可以了

response2 = urllib2.urlopen("http://www.lvye.org/userinfo.php?uid=409557")

print response2.read()

我们来看输出结果

ecb433346bd352f184ec890292be80ad.png

这还是没有返回登陆后的页面的源码,这是为什么呢?

这里详细讲两个问题

1. 为什么同样是 urlopen(),第一个携带data,而第二个却没有携带

前面我们已经说了,data 是post发送的数据,而这个发送的数据是有一个规定的url的,通过httpfox可以找的到,不是随便向哪个url发送都行的,所以上面那段的第一个url是登陆的网址,data数据要被发送到这个网址,而第二个url是网站里面的其他网址,不需要传入任何数据,所以不用写data参数,但是其实你加上来也不会报错,但是还是不能得出你想要的结果

2. 为什么上面的做法会失败

首先我们可以确定的是,我们post的方法是完全正确的,因为我们已经从源码中看到了现象,但是为什么我们连续使用两个urlopen()却没有成功呢,因为实际上上面的两个urlopen()只是把两个独立的操作合起来而已,这跟你在两个程序中分别打开这两个url的效果是一样的,不管是哪个urlopen(),它们都只是将网址打开,发送数据,然后获取返回的页面源码而已,它们并没有处理任何数据的能力,比如像cookies,我们前面也说过,因为urlopen()没有处理cookies和http验证的能力,所以要使用opener,这就是根本的原因,就像水过鸭背一样,执行完了就完了,并没有对数据进行处理,还是一样白搭,然并卵。

要解决这个问题只能使用cookies,先post数据到登陆的网址,然后使用cookielib获取cookies,再使用这个cookies登陆网站中其他的网页。因为登陆,获取cookies,使用cookies再次登陆这个是在同一个程序中运行的,处理器够快的话,充其量也就是几秒钟的事情,所以cookies的时效性可以不用考虑,好了,结合我们前面讲解的知识,我们将代码完成吧

#!/usr/bin/env python

# -*- coding:UTF-8 -*-

'''

使用post直接登陆

'''

import urllib

import urllib2

import cookielib

# 登陆界面的url

login_url = "http://www.lvye.org/user.php"

# 用户个人界面的url

user_url = "http://www.lvye.org/userinfo.php?uid=409557"

# 设置浏览器的headers信息

user_agent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0"

referer = "http://www.lvye.org/user.php"

host = "www.lvye.org"

headers = {'User-Agent':user_agent,

'Referer':referer,

'Host':host}

# 设置post 的数据

data = {'uname':'xxxxxxxxx',

'pass': 'xxxxxxxxxxxxxx',

'op': 'login',

'xoops_redirect':''}

# 将数据编码成url查询字符串

post_data = urllib.urlencode(data)

# 初始化一个cookieJar来处理 cookies,CookieJar 这个类是获取cookies并保存

cookieJar = cookielib.CookieJar()

# 给opener加入cookies的处理程序

handler = urllib2.HTTPCookieProcessor(cookieJar)

# 构建一个opener

opener = urllib2.build_opener(handler)

# 构造请求

request = urllib2.Request(login_url,headers=headers)

# 打开登陆界面的url,并将data post出去,

login_response = opener.open(request,post_data)

# 自动携带cookies去访问用户界面的url

response = opener.open(user_url)

print response.read()

好了,现在用我们前面将的判断模拟登陆是否成功的方法来验证吧

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

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

相关文章

国微高校 html源码,国微CMS模板结构_模板教程_广州国微软件高校站群系统---领先的高校站群系统方案|全媒体方案|学校网站系统...

讲解模板结构,我们以国微系统默认的school01模板为列子讲解,便于理解一、模板的组成模板的两大部分:一个模板的肯定有CSS(包括切图)、html组成CSS(包括切图)路径:放在网站根目录----skin----某某模板名称(自己命名如school1&#…

好看的个人网站源码_新手想建个人网站,都要注意哪些关于自助建站源码的坑?...

随着各种网站建设系统的普及、建站门槛的降低,现在个人建站越来越火,不管是工作党、学生党、自媒体人,想建设个人网站已经是非常简单的事。但是你知道自助建站都有哪些坑吗?前段时间在某论坛里看到一个小白想要建站,他…

html 当前域名,js 获取当前网站域名的方法

上午在做一个小项目时,需要从后台取到网页的路径并在前台用JS代码组合成网址再跳转。难度不是很大,主要是需要用到 js 代码获取当前网址的主域名,那么这篇博文,飞鸟慕鱼博客就来和大家说一说,js获取当前网站域名的方法…

查手机服务器ip和端口网站,如何查询服务器ip地址和端口号

如何查询服务器ip地址和端口号 内容精选换一换本节操作介绍如何在移动设备上连接Linux实例。以iTerminal-SSH Telnet为例介绍如何在iOS设备上连接 Linux 实例,详细操作请参考IOS设备上登录Linux云服务器。以JuiceSSH为例介绍如何在Android设备上连接 Linux 实例&…

网站跟服务器 空间,网站的服务器和空间

网站的服务器和空间 内容精选换一换空壳网站指备案主体已在工信部成功备案,但由于部分原因,导致网站备案信息中没有接入商信息。变成空壳网站的原因有:由于服务器IP地址变更,用户在原接入商处取消接入后,没有在其他接入…

iis web服务扩展_从本机IIS中管理 远程服务器 IIS及远程管理IIS网站与功能委派

有时候,一般情况下,我们对服务器上 IIS 上的管理局限于 使用远程桌面;现在介绍一种,通过 本机 管理管理远程IIS 的方法!1. 服务器端设置: 服务器管理器 》增加角色和功能向导》勾选 管理服务 安装。1)如图所…

想学网站建设与设计的书籍_网站建设中关于网站设计的重要性

网络的不断发展促使着众多企业开始在网络上开辟一席之地,网站搭建、网站设计、网站优化等等一系列的需要随之而来。当大家都在做网站时,网站建设的更优秀、排名更靠前的企业往往会脱颖而出,网站建设的好,客户才会被吸引从而下单&a…

python 选择 flask_Python-Flask实现基金自选网站

项目介绍 本项目的基金数据来自天天基金网,但该网站用户体验较差,内容冗余,故自己实现一个轻量级网站,从8个指标维度对股票基金和债券基金进行挑选,可对进行收益进行排序,并且可查看基金的同类排名与历史涨…

poi获取段落位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

1. python读取图片exif属性中的GPS信息智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和拍摄时间。如果将原始照片直接发送发布到网上,无意中就泄漏了自己的位置信息,有恶意企图的人可能会通过照片分析出你的家庭住址和…

开源框架_Java快速开发网站开源框架集合

介绍程序员都有开发博客网站的梦想,如果自己从买服务器开始搞起的话,会是一个非常漫长的过程.消耗的不光是时间还有非常多的精力,多半都会放弃了.但是如果把这个链路中的耗时的部分给优化下,那么这个梦想就非常的简单了.下面是搜集的一些快速开发博客网站的开源项目,可以帮助大…

机器学习实战|使用K-临近算法改进约会网站的配对效果

1 准备数据:从文本文件中解析数据 datingTestSet.txt: 每列分别代表每年获得的飞行常客里程数、玩游戏视频所耗时间百分比、每周消费的冰淇淋公升数、不喜欢/魅力一般/极具魅力(即标签) datingTestSet2.txt: 使用file2matrix函数处理输入…

电脑有回声_企业建设网站流程解析-上海回声网络

伴随着互联网的快速发展,几乎95%的企业都有属于自己的网站。网站作为企业在互联网上营销的敲门砖,其重要性不言而喻。很多人对网站的建设流程没有多大的概念,其实企业要想做好一个网站,流程这块是相当重要的。上海回声网络科技有限…

ckks方案优化最好的_怎样才能让网站优化快速有成效?

在网站运营中,网站优化最为关键。但是为什么很多优化人员优化不上去自己的网站呢?总的来说还是没有做好优化。那么我们应该怎样去优化网站才能快速有效的起到效果呢?深圳网站优化推广第一、每天更新网站的内容优化想要做好贵在持之以恒,我们必须每天坚…

服务器网站关联数据库,服务器关联数据库

服务器关联数据库 内容精选换一换PostgreSQL支持逻辑备份。您可使用pg_dump逻辑备份功能,导出备份文件,再通过psql导入到RDS中,实现将PostgreSQL的数据导入到云数据库RDS中。云数据库RDS服务支持开启公网访问功能,通过弹性公网IP进…

CentOS7.5基于LNMP平台搭建动态网站

**基于LNMP平台搭建动态网站**主机服务器:CentOS7.5 验证客户端:windows10/7 ***LNMP 动态网站部署架构是一套由Linux Nginx MySQL PHP 组成的动态网站系统 需要安装:PHP NGINXMYSQL 以及一系列依赖包。一、 先安装所需要的依赖包以及其他…

kali linux使用社会工程学工具伪造网站

使用社会工程学工具伪造网站 ​ 社会工程学是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗等危害手段取得自身利益的手法,是通过研究受害者心理,并以此诱使受害者做出配合,从而达到自身目的的方法。 ​ …

php301劫持,黑帽seo技巧-301权重代码劫持

原标题:黑帽seo技巧-301权重代码劫持黑帽seo技巧-301权重代码劫持,让别人网站权重变成自己网站的权重!一、为什么要做地区劫持:不会被发现的黑帽seo技巧-地区劫持代码最近群里(QQ群:165383652)的小伙伴有人问&#xff…

【资源网站】推荐几个搜索资源网站

学习技术过程我们常见需要使用搜索引擎来检索资料,国内常用的也就是百度了。当然,有条件的话(如在高校)首先推荐使用Google,如果没办法使用,可以使用以下几个作为备用: linux公社资料:linux.linuxidc.com

MR_LINUX_DRIVER安装教程,CentOS安装RAID卡驱动总结_Linux教程_Linux公社-Linux系统门户网站...

有些时候CentOS Linux内核不存在raid卡的驱动,以前只能用软盘加载驱动,其实是还有其它方法的,只要找到官方相应的驱动,现在Raid卡的品牌很多,但是大部分独立raid卡为highpoint,3ware,adapter,lsi,promise等…

python爬虫学习笔记(一)-- 网站自动登录(一)

上篇介绍了Python的5中参数类型,这里我们再简单的复习一下: 这个案例中,我们使用requests中定义个get函数来复习: get(url, paramsNone, **kwargs) post(url, dataNone, jsonNone, **kwargs) url是位置参数或者关键字参数、par…