200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 爬虫(二) parse 各类请求和伪装UA

爬虫(二) parse 各类请求和伪装UA

时间:2019-03-30 23:51:29

相关推荐

爬虫(二) parse 各类请求和伪装UA

前提:

url的组成:url只能由特定的字符组成,字母,数字和下划线,如果出现其他的,比如 $空格中文则要对其进行编码。

代码示例如下:

import urllib.parseimport urllib.requesturl = '//06/061932375wdkimqcyej.jpg'# ret_url = urllib.parse.quote(url)# urllib.request.urlretrieve(ret_url, 'chun2.jpg')## print(ret_url)data={"name" : "嘿嘿嘿","sex" : "nan","age" : 20 ,}ret_url = urllib.parse.urlencode(data)ret_url = url.__add__(ret_url)print(ret_url)

运行结果:

//06/061932375wdkimqcyej.jpgname=%E6%9E%97%E4%BF%8A%E6%B6%B5&sex=nan&age=20

获取表单数据,post请求:

步骤如下:

先在浏览器发送post请求。使用抓包工具抓post数据。在请求头的获取url,在post数据包中获取表单数据。通过url,和伪造的UA生成请求对象。处理表单数据,使用urllib库中的urlopen进行处理。最后通过请求对象和处理完的表单数据获取响应信息。

import urllib.requestimport urllib.parse# 获取posturl的地址post_url = '/sug'word = input("请输入您要查询的英文单词:")# 构建post表单数据from_data = {'kw': word,}# 发送请求的过程headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) ''AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/63.0.3239.132 Safari/537.36',}# 构建请求对象request = urllib.request.Request(url=post_url, headers=headers)# 处理表单数据from_data = urllib.parse.urlencode(from_data)# 发送请求response = urllib.request.urlopen(request, data=from_data.encode())print(response.read().decode())

伪装UA(User-Agent):

有时候仅仅伪装UA还不能躲过反爬虫机制,这时候我们需要用详细的请求头信息进行更全面的信息伪装。

以下代码就是伪装全面利用请求的信息进行伪装的例子:

import urllib.requestimport urllib.parsepost_url = '/v2transapi'word = input("请输入您要查询的英文单词:")from_data = {'from': 'en','to': 'zh','query': 'wolf','transtype': 'realtime','simple_means_flag': '3','sign': '275695.55262','token': '5eb650ac4d089f39824c985a5be3eddf',}# headers = {#'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) '# 'AppleWebKit/537.36 (KHTML, like Gecko)'# ' Chrome/63.0.3239.132 Safari/537.36',# }headers = {'Host': '','Connection': 'keep-alive',# 'Content-Length': '120','Accept': '*/*','Origin': '','X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Referer': '/?aldtype=16047',# 'Accept-Encoding': 'gzip, deflate, br',# 这是数据包可接受的压缩方式,一般情况下将其去掉不做压缩'Accept-Language': 'zh-CN,zh;q=0.9','Cookie': 'BAIDUID=68393D21286EBF4A001B4E0FCA70F07F:FG=1; PSTM=1539614412; BIDUPSID=A4E0DC66251C305F80AB5BA6B0624EA5;',}request = urllib.request.Request(url=post_url, headers=headers)from_data = urllib.parse.urlencode(from_data)response = urllib.request.urlopen(request, data=from_data.encode())print(response.read().decode())

ajax获取get请求信息:

在浏览器上数页使用Url访问内容,发现其中url存在的变换规律。终端获取关键信息,将信息进行编码,装到通用url后面。最后利用组装好的url获得请求和响应。

import urllib.requestimport urllib.parseurl = '/j/chart/top_list?type=5&interval_id=100%3A90&action=&'pag = int(input("请输入您要看到的页数:"))number = 20# 构建get参数data = {'start': (pag - 1) * 20,'limit': number,}# 将gei参数转化为query_stringquery_string = urllib.parse.urlencode(data)print(query_string)url += query_string# 伪装UAheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) ''AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/63.0.3239.132 Safari/537.36',}request = urllib.request.Request(url, headers=headers)response = urllib.request.urlopen(request)print(response.read().decode())

ajax获取post请求信息:

利用抓包工具抓取其中的关键变化信息。在终端输入需要的关键信息。后面和普通的post请求的操作是一样的。

import urllib.requestimport urllib.parsepost_url = '/kfccda/ashx/GetStoreList.ashx?op=keyword'city = input("请输入您要查询的城市:")page = input("请输入您要查询的页数:")size = input("请输入您要查询的个数: ")form = {'cname': '','pid': '','keyword': city,'pageIndex': page,'pageSize': size,}headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) ''AppleWebKit/537.36 (KHTML, like Gecko)'' Chrome/63.0.3239.132 Safari/537.36',}request = urllib.request.Request(post_url, headers=headers)form = urllib.parse.urlencode(form)response = urllib.request.urlopen(post_url, data=form.encode())print(response.read().decode())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。