python模拟浏览器发送http消息(更新:关于cookie的管理)
2015-02-09 13:59
549 查看
python自带的urllib,urllib2可以极方便做http操作,在我们按照http方式提交消息请求后,有可能会看见返回这个错误“403 forbidden",这是请求的网站做了阻止,于是我们需要把自己伪装成模拟器。对此,可以加上headers={'User-Agent':user-agent,'cookie':cookie},注意操作的网站 需要登录账号的话,就需要加上cookie,这两个值可以通过chrome的”开发者工具“查看:
把他们加上去,然后在请求值那里再加上:
req = urllib2.Request(url = req_url,data = trans_data_urlencode,headers=headers)
这样就可以模拟浏览器发送消息了
==========================我是技能升级的分割线=====================================================
以前曾经写到的是从控制台里截取cookie,添加到代码里,为了更加地自动化,可以使用cookielib来管理cookie
def getCookie(get_cookie_url):
'''
@功能:获取cookie,并存储在cookieJar进行管理
'''
cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
resp = urllib2.urlopen(get_cookie_url)
这里就把urllib2与cookie绑在一起,之后做的每个请求都会带上cookie了,get_cookie_url这个请求的url是返回值能够带有cookie的url就可以了。
这种情况是我们使用cookielib来获取cookie并自动管理,那么当我们有已知的cookie,怎么添加呢?
def make_cookie(name,value,domain):
'''
@功能:写入cookie
'''
return cookielib.Cookie(
version=0,
name=name,
value=value,
port=None,
port_specified=False,
domain=domain,
domain_specified=True,
domain_initial_dot=False,
path="/",
path_specified=True,
secure=False,
expires=None,
discard=False,
comment=None,
comment_url=None,
rest=None
)
可以先写个make_cookie的函数,里边参数比较多,有些默认就好。然后同样地把urllib2和cookie绑定在一起:
cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
#接着用cj来set cookie
cj.set_cookie(make_cookie(name,value,domain))
把他们加上去,然后在请求值那里再加上:
req = urllib2.Request(url = req_url,data = trans_data_urlencode,headers=headers)
这样就可以模拟浏览器发送消息了
==========================我是技能升级的分割线=====================================================
以前曾经写到的是从控制台里截取cookie,添加到代码里,为了更加地自动化,可以使用cookielib来管理cookie
def getCookie(get_cookie_url):
'''
@功能:获取cookie,并存储在cookieJar进行管理
'''
cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
resp = urllib2.urlopen(get_cookie_url)
这里就把urllib2与cookie绑在一起,之后做的每个请求都会带上cookie了,get_cookie_url这个请求的url是返回值能够带有cookie的url就可以了。
这种情况是我们使用cookielib来获取cookie并自动管理,那么当我们有已知的cookie,怎么添加呢?
def make_cookie(name,value,domain):
'''
@功能:写入cookie
'''
return cookielib.Cookie(
version=0,
name=name,
value=value,
port=None,
port_specified=False,
domain=domain,
domain_specified=True,
domain_initial_dot=False,
path="/",
path_specified=True,
secure=False,
expires=None,
discard=False,
comment=None,
comment_url=None,
rest=None
)
可以先写个make_cookie的函数,里边参数比较多,有些默认就好。然后同样地把urllib2和cookie绑定在一起:
cj = cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
#接着用cj来set cookie
cj.set_cookie(make_cookie(name,value,domain))
相关文章推荐
- HttpWebRequest模拟浏览器发送请求
- python requests 自动管理 cookie 。 get后进行post发送数据---》最简单的刷票
- C#HttpClient或使用CookieContainer模拟登陆后HttpRequest不发送cookie的解决方法及原因
- python中使用requests 模拟浏览器发送请求数据
- HttpClient服务器模拟浏览器发送请求
- C#使用HttpWebRequest进行HTTP请求发送和接收的一些小结。(新增修复.NET4.0以下关于cookie的bug)
- 【转】 httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息
- httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息
- httpClient模拟浏览器自带cookie发送访问请求
- [Python]网络爬虫(三):使用cookiejar管理cookie 以及 模拟登录知乎
- Python,PHP模拟浏览器发送HTTP请求
- .Net HttpClient 模拟登录微信公众平台发送消息
- 【转】 httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息
- python 利用浏览器 Cookie 模拟登录的用户访问知乎
- 一个小型浏览器架构:HTTP通讯、COOKIE处理、HTML解析、JS模拟、表单处理
- C#模拟手机QQ 发送QQ消息(QQhttp1.4协议)
- Java socket模拟发送和接收HTTP消息
- python模拟浏览器保存Cookie进行会话
- Python学习笔记(九) -- Python HttpClient使用requests库发送http消息
- httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息