python模拟浏览器登陆(用python模拟用户登录)

发布时间:2022-11-14

本文目录一览:

  1. 如何使用python进行浏览器行为模拟
  2. 怎样利用python打开一个网页并实现自动登录
  3. [Python Request库模拟登录](#Python Request库模拟登录)
  4. python3模拟登录有哪些情况

如何使用python进行浏览器行为模拟

你可以使用python的webbrowser库来模拟浏览器:

url = '' # Open URL in a new tab, if a browser window is already open.
webbrowser.open_new_tab(url + 'doc/') # Open URL in new window, raising the window if possible.
webbrowser.open_new(url)

或者使用python的第三方库,selenium

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get('http://www.yahoo.com')
assert 'Yahoo!' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)
browser.quit()

怎样利用python打开一个网页并实现自动登录

登陆其实就是将账号密码之类的POST到那个网站的服务器。你可以通过抓包看到你点击登陆时发的POST包。那么你用python也模拟发一个一样的包给服务器,就实现了模拟登陆呗。

Python Request库模拟登录

  1. 读取本地用户文件,或者账号名和密码
  2. 使用md5对用户密码进行加密
  3. 获取session的临时随机串及sessionid
  4. 对随机串及用户密码进行二次md5加密生成新的请求秘钥串
  5. 传递用户名、新的秘钥串及sessionid模拟用户登录

python3模拟登录有哪些情况

使用谷歌浏览器F12查看登录请求内容

  1. request header需要参数:User-Agent、Referer等。
  2. post内容。 python 3.x中urllib库和urilib2库合并成了urllib库。
  • urllib2.urlopen() 变成了 urllib.request.urlopen()
  • urllib2.Request() 变成了 urllib.request.Request()
  • cookielib 模块 -> http.cookiejar
#!/usr/bin/env python
# -*- coding:gb2312 -*-
# __author__="zhaowei"
'''
python3.4
    模拟登录郑州公积金网站,查询缴存至月份。
'''
from html.parser import HTMLParser
import urllib
import http.cookiejar
import string
import re
hosturl = ''
posturl = ''
cj = http.cookiejar.CookieJar()
cookie_support = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
h = urllib.request.urlopen(hosturl)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',
    'Referer': ''
}
postData = {
    'selectlb': '1', # 登录模式,身份证2,账号1
    'username': '1423141234', # 公积金账号
    'radename': '赵威', # 姓名
    'mm': '88888', # 密码
    'submit322': '确认' # 固定值
}
postData = urllib.parse.urlencode(postData, encoding='gb2312').encode('gb2312')
# 因为post里面有中文,因此需要先把url经过gb2312编码处理,然后再把请求编码为gb2312字节码(post必须是字节码)
request = urllib.request.Request(posturl, postData, headers)
response = urllib.request.urlopen(request)
text = response.read()
html = text.decode('gb2312')
hgjj_last_data = re.findall('tdp缴至月份:/p(\s*)/td(\s*)td(.*?)/td', html)
# 使用正则表达式匹配缴至月份
print(hgjj_last_data[0][2])