python模拟浏览器登陆学院网

2024-05-18 01:18

1. python模拟浏览器登陆学院网

这个应该可以,刚试了一下,用户名密码错误会报500错误。这个网址没使用cookie。
# -*- coding: utf-8 -*-import urllibimport urllib2post_url = 'post_headers = {    # 'POST': '/elect/login HTTP/1.1',    'Host': 'uems.sysu.edu.cn',    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:32.0) Gecko/20100101 Firefox/32.0',    # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',    # 'Accept-Language': 'en-US,en;q=0.5',    # 'Accept-Encoding': 'gzip, deflate',    'Referer': ',    # 'Connection': 'keep-alive',}post_data = {    '_eventId': 'submit',    'gateway': 'true',    'lt': '',    'password': '12345',    'username': 'apple',}post_data = urllib.urlencode(post_data)request = urllib2.Request(url=post_url, data=post_data, headers=post_headers)response = urllib2.urlopen(request)html = response.read()print html 你的代码,加上headers应该就可以。一般而言 user-agent, referer 是必须的

python模拟浏览器登陆学院网

2. python http requests 怎么实现模拟登录,提交表单

浏览器都有控制台的,你自己去看看里面的原始请求是怎样的就好了

3. 如何使用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 webdriverfrom selenium.webdriver.common.keys import Keysbrowser = webdriver.Firefox()browser.get(')assert 'Yahoo!' in browser.titleelem = browser.find_element_by_name('p')  # Find the search boxelem.send_keys('seleniumhq' + Keys.RETURN)browser.quit()如果解决了您的问题请采纳!如果未解决请继续追问!

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

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

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

5. Python 模拟登录网站的问题

提交的地址会有些变化,在URL中添加了jsessionid。
通过GET方法,手动获取cookie。然后在修改POST的headers和url
试下下面的代码,应该没问题了
#-*- coding:utf-8 -*-import urllibimport urllib2# 获取cookiedef get_jsessionid():    url = 'http://gzb.szsy.cn:3000/cas/login'    response = urllib.urlopen(url)    sid = str(response.headers['Set-Cookie'])[11:43]    return siddef main():    sid = get_jsessionid()    post_url = 'http://gzb.szsy.cn:3000/cas/login;jsessionid=' + sid    post_data = {        'username': 'apple',        'password': '12345',        'lt': 'e1s1',        '_eventId': 'submit',    }    post_data = urllib.urlencode(post_data)    post_headers = {        'Cookie': sid,    }    request = urllib2.Request(post_url, post_data, post_headers)    response = urllib2.urlopen(request)    html = response.read()    print htmlif __name__ == '__main__':    main()

Python 模拟登录网站的问题

6. 如何用 Python 爬取需要登录的网站

步骤一:研究该网站

打开登录页面

 进入以下页面  “bitbucket.org/account/signin”。你会看到如下图所示的页面(执行注销,以防你已经登录)



仔细研究那些我们需要提取的详细信息,以供登录之用

在这一部分,我们会创建一个字典来保存执行登录的详细信息:

1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。





2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 
“password” 的输入框的值。“password” 将是字典的 key  值,我们输入的密码将是对应的 value 
值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。





3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken”
 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“ authenticationtoken” 的隐藏输入值)。列如:“Vy00PE3Ra6aISwKBrPn72SFml00IcUV8”。





最后我们将会得到一个类似这样的字典:



		

		
			

			
Python

			
			
payload = {
    "username": "", 
    "password": "", 
    "csrfmiddlewaretoken": ""
}

			

				

					

				
					
1
2
3
4
5

				   						
payload = {
    "username": "",
    "password": "",
    "csrfmiddlewaretoken": ""
}
   					


				

			

		

请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。

步骤2:执行登录网站

对于这个脚本,我们只需要导入如下内容:


		

		
			

			
Python

			
			
import requests
from lxml import html

			

				

					

				
					
1
2

				   						
import requests
from lxml import html
   					


				

			

		

首先,我们要创建 session 对象。这个对象会允许我们保存所有的登录会话请求。



		

		
			

			
Python

			
			
session_requests = requests.session()

			

				

					

				
					
1

				   						
session_requests = requests.session()
   					


				

			

		

第二,我们要从该网页上提取在登录时所使用的 csrf 标记。在这个例子中,我们使用的是 lxml 和 xpath 来提取,我们也可以使用正则表达式或者其他的一些方法来提取这些数据。



		

		
			

			
Python

			
			
login_url = "https://bitbucket.org/account/signin/?next=/"
result = session_requests.get(login_url)

tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]

			

				

					

				
					
1
2
3
4
5

				   						
login_url = "https://bitbucket.org/account/signin/?next=/"
result = session_requests.get(login_url)
 
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
   					


				

			

		

**更多关于xpath 和lxml的信息可以在这里找到。

接下来,我们要执行登录阶段。在这一阶段,我们发送一个 POST 请求给登录的 url。我们使用前面步骤中创建的 payload 作为 data 。也可以为该请求使用一个标题并在该标题中给这个相同的 url 添加一个参照键。



		

		
			

			
Python

			
			
result = session_requests.post(
    login_url, 
    data = payload, 
    headers = dict(referer=login_url)
)

			

				

					

				
					
1
2
3
4
5

				   						
result = session_requests.post(
    login_url,
    data = payload,
    headers = dict(referer=login_url)
)
   					


				

			

		

步骤三:爬取内容

现在,我们已经登录成功了,我们将从 bitbucket dashboard 页面上执行真正的爬取操作。



		

		
			

			
Python

			
			
url = 'https://bitbucket.org/dashboard/overview'
result = session_requests.get(
    url, 
    headers = dict(referer = url)
)

			

				

					

				
					
1
2
3
4
5

				   						
url = 'https://bitbucket.org/dashboard/overview'
result = session_requests.get(
    url,
    headers = dict(referer = url)
)
   					


				

			

		

为了测试以上内容,我们从 bitbucket dashboard 页面上爬取了项目列表。我们将再次使用 
xpath 来查找目标元素,清除新行中的文本和空格并打印出结果。如果一切都运行 OK,输出结果应该是你 bitbucket 账户中的 
buckets / project 列表。



		

		
			

			
Python

			
			
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]

print bucket_names

			

				

					

				
					
1
2
3
4
5

				   						
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]
 
print bucket_names
   					


				

			

		

你也可以通过检查从每个请求返回的状态代码来验证这些请求结果。它不会总是能让你知道登录阶段是否是成功的,但是可以用来作为一个验证指标。

例如:



		

		
			

			
Python

			
			
result.ok # 会告诉我们最后一次请求是否成功
result.status_code # 会返回给我们最后一次请求的状态

			

				

					

				
					
1
2

				   						
result.ok # 会告诉我们最后一次请求是否成功
result.status_code # 会返回给我们最后一次请求的状态
   					


				

			

		

就是这样。

7. python 实现12306模拟浏览器登录 手动输入验证码 怎么输入

代码中验证码提供有两种方式,第一种通过webbrowser的open直接在浏览器中打开含有验证码的图片,第二种就是将其以jepg格式存在C:\\Users\\Administrator\\Desktop\\checkcode.jepg。你可以根据自己主机的用户名更改路径。同时这个代码必须先指定用户名和账号也可以实时输入账号的密码,小小修改一下代码就可以。

python 实现12306模拟浏览器登录 手动输入验证码 怎么输入

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

以登陆百度为例子,如下:
import urllib,urllib2,httplib,cookielib
def auto_login_hi(url,name,pwd):
    url_hi="http://passport.baidu.com/?login"
    #设置cookie
    cookie=cookielib.CookieJar()
    cj=urllib2.HTTPCookieProcessor(cookie)
    #设置登录参数
    postdata=urllib.urlencode({'username':name,'password':pwd})
    #生成请求
    request=urllib2.Request(url_hi,postdata)
    #登录百度
    opener=urllib2.build_opener(request,cj)
    f=opener.open(request)
    print f
    #打开百度HI空间页面
    hi_html=opener.open(url)
    return hi_html
if __name__=='__main__':
    name='name'
    password='password'
    url='yoururl'#例如:url='http://hi.baidu.com/cdkey51'
    h=auto_login_hi(url,name,password)
    print h.read()#h里面的内容便是登录后的页面内容