当前位置:首页 » 编程语言 » python模拟登录网页登录

python模拟登录网页登录

发布时间: 2023-08-31 12:03:28

python获取cookie后怎么模拟登陆网站

运行平台:Windows

Python版本:Python3.x

IDE:Sublime text3

一、为什么要使用Cookie

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。
使用Cookie和使用代理IP一样,也需要创建一个自己的opener。在HTTP包中,提供了cookiejar模块,用于提供对Cookie的支持。

三、总结

获取成功!如果看过之前的笔记内容,我想这些代码应该很好理解吧。

⑵ 用python写一个程序模拟登陆,不知怎么写,请大神指点

importhttplib2
response,content=httplib2.Http().request("guji.artx.cn","GET"header={"cookie":"bdshare_...","User-Agent":"Mozilla/5.0(Windows..."}


请求头都以dict形式写在header里就行了。

返回值中,response里主要是状态码,等信息,注意里面的set-cookie字段。

所以除了js无法实现,你完全可以100%模拟浏览器的行为,cookie、ua、referer都可以带上。

⑶ python爬虫模拟登录是什么意思

有些网站需要登录后才能爬取所需要的信息,此时可以设计爬虫进行模拟登录,原理是利用浏览器cookie。

一、浏览器访问服务器的过程:
(1)浏览器(客户端)向Web服务器发出一个HTTP请求(Http request);
(2)Web服务器收到请求,发回响应信息(Http Response);
(3)浏览器解析内容呈现给用户。

二、利用Fiddler查看浏览器行为信息:

Http请求消息:

(1)起始行:包括请求方法、请求的资源、HTTP协议的版本号

这里GET请求没有消息主体,因此消息头后的空白行中没有其他数据。

(2)消息头:包含各种属性

(3)消息头结束后的空白行

(4)可选的消息体:包含数据

Http响应消息:

(1)起始行:包括HTTP协议版本,http状态码和状态

(2)消息头:包含各种属性

(3)消息体:包含数据


可以发现,信息里不仅有帐号(email)和密码(password),其实还有_xsrf(具体作用往后看)和remember_me(登录界面的“记住我”)两个值。

那么,在python爬虫中将这些信息同样发送,就可以模拟登录。

在发送的信息里出现了一个项:_xsrf,值为

这个项其实是在访问知乎登录网页https://www.hu.com/#signin时,网页发送过来的信息,在浏览器源码中可见:

所以需要先从登录网址https://www.hu.com/#signin获取这个_xsrf的值,

并连同帐号、密码等信息再POST到真正接收请求的http://www.hu.com/login/email网址。

(2)获取_xsrf的值:
爬取登录网址https://www.hu.com/#signin,从内容中获取_xsrf的值。
正则表达式。

(3)发送请求:
xsrf = 获取的_xsrf的值
data = {"email":"xxx","password":"xxx","_xsrf":xsrf}
login = s.post(loginURL, data = data, headers = headers)
loginURL:是真正POST到的网址,不一定等同于登录页面的网址;

(4)爬取登录后的网页:
response = s.get(getURL, cookies = login.cookies, headers = headers)
getURL:要爬取的登陆后的网页;
login.cookies:登陆时获取的cookie信息,存储在login中。

(5)输出内容:
print response.content

五、具体代码:

[python]view plain

  • #-*-coding:utf-8-*-

  • #author:Simon

  • #updatetime:2016年3月17日17:35:35

  • #功能:爬虫之模拟登录,urllib和requests都用了...

  • importurllib

  • importurllib2

  • importrequests

  • importre

  • headers={'User-Agent':'Mozilla/5.0(WindowsNT6.2)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.12Safari/535.11'}

  • defget_xsrf():

  • firstURL="http://www.hu.com/#signin"

  • request=urllib2.Request(firstURL,headers=headers)

  • response=urllib2.urlopen(request)

  • content=response.read()

  • pattern=re.compile(r'name="_xsrf"value="(.*?)"/>',re.S)

  • _xsrf=re.findall(pattern,content)

  • return_xsrf[0]

  • deflogin(par1):

  • s=requests.session()

  • afterURL="https://www.hu.com/explore"#想要爬取的登录后的页面

  • loginURL="http://www.hu.com/login/email"#POST发送到的网址

  • login=s.post(loginURL,data=par1,headers=headers)#发送登录信息,返回响应信息(包含cookie)

  • response=s.get(afterURL,cookies=login.cookies,headers=headers)#获得登陆后的响应信息,使用之前的cookie

  • returnresponse.content

  • xsrf=get_xsrf()

  • print"_xsrf的值是:"+xsrf

  • data={"email":"xxx","password":"xxx","_xsrf":xsrf}

  • printlogin(data)

  • 六、补充:

    用知乎网做完试验,发现这里好像并不需要发送_xsrf这个值。

    不过有的网站在登陆时确实需要发送类似这样的一个值,可以用上述方法。

⑷ 如何用python实现网页自动登录

这个你要用到BP,抓取数据包,通过分析数据包提交的表单,每次调用脚本的时候将表单进行提交,但一般这种可行比较低,看网页的安全性做的如何,如果有验证码和token校验的话你就不用试了。

⑸ python 使用requests模块, 如何模拟进行登录并执行之后的操作

以下实例是一个完整的代码,实现了从博客获取内容发布至网络,分别实践抓取博客内容、模拟登录、表单提交这几步;
#注意,以下程序是一个完全程序,如果只需要实现模拟登录,提交表单,删除抓取部分即可,相关的代码已经清楚标注,可以根据自己实际情况修改。
代码如下:
# -*- coding: utf-8 -*-
import re
import urllib
import urllib2
import cookielib
#第一步,获取博客标题和正文 ,“IP”可以改为实际地址;
url = "IP"
sock = urllib.urlopen(url)
html = sock.read()
sock.close()
content = re.findall('(?<=blogstory">).*(?=<p class="right artical)', html, re.S)
content = re.findall('<script.*>.*</script>(.*)', content[0], re.S)
title = re.findall('(?<=<title>)(.*)-.* - CSDN.*(?=</title>)', html, re.S)
#根据文章获取内容新建表单值
blog = {'spBlogTitle': title[0].decode('utf-8').encode('gbk'), #文章标题
'spBlogText': content[0].decode('utf-8').encode('gbk'),#文章内容
'ct': "1",
'cm': "1"}
del content
del title

#第二步,模拟登录网络;
cj = cookielib.CookieJar()
#登陆网络的用户名和密码
post_data = urllib.urlencode({'username': '[username]', 'password': '[password]', 'pwd': '1'})
#登录地址路径
path = 'https://passport..com/?login'
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Opera/9.23')]
urllib2.install_opener(opener)
req = urllib2.Request(path, post_data)
conn = urllib2.urlopen(req)
#获取网络登陆认证令牌
bd = urllib2.urlopen(urllib2.Request('http://hi..com/[username]/creat/blog')).read()
bd = re.findall('(?<=bdstoken\" value=\").*(?=ct)', bd, re.S)
blog['bdstoken'] = bd[0][:32]
#设置分类名
blog['spBlogCatName'] = 'php'
#第四步,比较表单,提交表单;req2 = urllib2.Request('http://hi..com/[username]/commit', urllib.urlencode(blog))
#最后,查看表单提交后返回内容,检验;
print urllib2.urlopen(req2).read()
#注意:将[username]/[password]替换为自己真实用户名和密码

热点内容
r7000p2021买哪个配置 发布:2025-02-04 06:40:17 浏览:965
如何消除微信小程序缓存 发布:2025-02-04 06:34:24 浏览:633
python27mysqldb 发布:2025-02-04 06:28:44 浏览:768
svn文件夹权限 发布:2025-02-04 06:23:47 浏览:900
师编程 发布:2025-02-04 06:22:51 浏览:168
加密类型wpa 发布:2025-02-04 06:21:27 浏览:178
互联网与云服务器 发布:2025-02-04 06:15:56 浏览:254
硬盘挖矿源码 发布:2025-02-04 06:15:45 浏览:76
宝马3系哪个配置合适 发布:2025-02-04 06:03:10 浏览:328
磁盘存储器的管理课后答案 发布:2025-02-04 05:58:58 浏览:600