日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python伪造请求头x-forwarded-for的作用_Pyspider中给爬虫伪造随机请求头的实例

發布時間:2024/9/27 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python伪造请求头x-forwarded-for的作用_Pyspider中给爬虫伪造随机请求头的实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Pyspider 中采用了 tornado 庫來做 http 請求,在請求過程中可以添加各種參數,例如請求鏈接超時時間,請求傳輸數據超時時間,請求頭等等,但是根據pyspider的原始框架,給爬蟲添加參數只能通過 crawl_config這個Python字典來完成(如下所示),框架代碼將這個字典中的參數轉換成 task 數據,進行http請求。這個參數的缺點是不方便給每一次請求做隨機請求頭。

crawl_config = {

"user_agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",

"timeout": 120,

"connect_timeout": 60,

"retries": 5,

"fetch_type": 'js',

"auto_recrawl": True,

}

這里寫出給爬蟲添加隨機請求頭的方法:

1、編寫腳本,將腳本放置在 pyspider 的 libs 文件夾下,命名為 header_switch.py

#!/usr/bin/env python

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

# Created on 2017-10-18 11:52:26

import random

import time

class HeadersSelector(object):

"""

Header 中缺少幾個字段 Host 和 Cookie

"""

headers_1 = {

"Proxy-Connection": "keep-alive",

"Pragma": "no-cache",

"Cache-Control": "no-cache",

"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",

"DNT": "1",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4",

"Referer": "https://www.baidu.com/s?wd=%BC%96%E7%A0%81&rsv_spt=1&rsv_iqid=0x9fcbc99a0000b5d7&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=If-None-Match&inputT=7282&rsv_t",

"Accept-Charset": "gb2312,gbk;q=0.7,utf-8;q=0.7,*;q=0.7",

} # 網上找的瀏覽器

headers_2 = {

"Proxy-Connection": "keep-alive",

"Pragma": "no-cache",

"Cache-Control": "no-cache",

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",

"Accept": "image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*",

"DNT": "1",

"Referer": "https://www.baidu.com/link?url=c-FMHf06-ZPhoRM4tWduhraKXhnSm_RzjXZ-ZTFnPAvZN",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4",

} # window 7 系統瀏覽器

headers_3 = {

"Proxy-Connection": "keep-alive",

"Pragma": "no-cache",

"Cache-Control": "no-cache",

"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0",

"Accept": "image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/*",

"DNT": "1",

"Referer": "https://www.baidu.com/s?wd=http%B4%20Pragma&rsf=1&rsp=4&f=1&oq=Pragma&tn=baiduhome_pg&ie=utf-8&usm=3&rsv_idx=2&rsv_pq=e9bd5e5000010",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.7,en;q=0.6",

} # Linux 系統 firefox 瀏覽器

headers_4 = {

"Proxy-Connection": "keep-alive",

"Pragma": "no-cache",

"Cache-Control": "no-cache",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0",

"Accept": "*/*",

"DNT": "1",

"Referer": "https://www.baidu.com/link?url=c-FMHf06-ZPhoRM4tWduhraKXhnSm_RzjXZ-ZTFnP",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.7,en;q=0.6",

} # Win10 系統 firefox 瀏覽器

headers_5 = {

"Connection": "keep-alive",

"Pragma": "no-cache",

"Cache-Control": "no-cache",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64;) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063",

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",

"Referer": "https://www.baidu.com/link?url=c-FMHf06-ZPhoRM4tWduhraKXhnSm_RzjXZ-",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.7,en;q=0.6",

"Accept-Charset": "gb2312,gbk;q=0.7,utf-8;q=0.7,*;q=0.7",

} # Win10 系統 Chrome 瀏覽器

headers_6 = {

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.8",

"Pragma": "no-cache",

"Cache-Control": "no-cache",

"Connection": "keep-alive",

"DNT": "1",

"Referer": "https://www.baidu.com/s?wd=If-None-Match&rsv_spt=1&rsv_iqid=0x9fcbc99a0000b5d7&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rq",

"Accept-Charset": "gb2312,gbk;q=0.7,utf-8;q=0.7,*;q=0.7",

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0",

} # win10 系統瀏覽器

def __init__(self):

pass

def select_header(self):

n = random.randint(1, 6)

switch={

1: self.headers_1

2: self.headers_2

3: self.headers_3

4: self.headers_4

5: self.headers_5

6: self.headers_6

}

headers = switch[n]

return headers

其中,我只寫了6個請求頭,如果爬蟲的量非常大,完全可以寫更多的請求頭,甚至上百個,然后將 random的隨機范圍擴大,進行選擇。

2、在pyspider 腳本中編寫如下代碼:

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

# Created on 2017-08-18 11:52:26

from pyspider.libs.base_handler import *

from pyspider.addings.headers_switch import HeadersSelector

import sys

defaultencoding = 'utf-8'

if sys.getdefaultencoding() != defaultencoding:

reload(sys)

sys.setdefaultencoding(defaultencoding)

class Handler(BaseHandler):

crawl_config = {

"user_agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",

"timeout": 120,

"connect_timeout": 60,

"retries": 5,

"fetch_type": 'js',

"auto_recrawl": True,

}

@every(minutes=24 * 60)

def on_start(self):

header_slt = HeadersSelector()

header = header_slt.select_header() # 獲取一個新的 header

# header["X-Requested-With"] = "XMLHttpRequest"

orig_href = 'http://sww.bjxch.gov.cn/gggs.html'

self.crawl(orig_href,

callback=self.index_page,

headers=header) # 請求頭必須寫在 crawl 里,cookies 從 response.cookies 中找

@config(age=24 * 60 * 60)

def index_page(self, response):

header_slt = HeadersSelector()

header = header_slt.select_header() # 獲取一個新的 header

# header["X-Requested-With"] = "XMLHttpRequest"

if response.cookies:

header["Cookies"] = response.cookies

其中最重要的就是在每個回調函數 on_start,index_page 等等 當中,每次調用時,都會實例化一個 header 選擇器,給每一次請求添加不一樣的 header。要注意添加的如下代碼:

header_slt = HeadersSelector()

header = header_slt.select_header() # 獲取一個新的 header

# header["X-Requested-With"] = "XMLHttpRequest"

header["Host"] = "www.baidu.com"

if response.cookies:

header["Cookies"] = response.cookies

當使用 XHR 發送 AJAX 請求時會帶上 Header,常被用來判斷是不是 Ajax 請求, headers 要添加 {‘X-Requested-With': ‘XMLHttpRequest'} 才能抓取到內容。

確定了 url 也就確定了請求頭中的 Host,需要按需添加,urlparse包里給出了根據 url解析出 host的方法函數,直接調用netloc即可。

如果響應中有 cookie,就需要將 cookie 添加到請求頭中。

如果還有別的偽裝需求,自行添加。

如此即可實現隨機請求頭,完。

以上這篇Pyspider中給爬蟲偽造隨機請求頭的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。

本文標題: Pyspider中給爬蟲偽造隨機請求頭的實例

本文地址: http://www.cppcns.com/jiaoben/python/227296.html

總結

以上是生活随笔為你收集整理的python伪造请求头x-forwarded-for的作用_Pyspider中给爬虫伪造随机请求头的实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 妖精视频在线观看免费 | 在线aaa | 欧美成人精品激情在线视频 | 五月天免费网站 | 日本午夜激情视频 | 色婷婷成人网 | 人妻激情偷乱视频一区二区三区 | 性生交大片免费看 | 国产av无码专区亚洲av毛片搜 | 亚洲午夜色| 日韩av在线网址 | 亚洲精品av中文字幕在线在线 | 久久成年人视频 | 国产高清一区二区三区四区 | wwwav视频 | 解开人妻的裙子猛烈进入 | 中文 日韩 欧美 | 欧美a视频| 污网站在线观看免费 | 少妇厨房愉情理伦bd在线观看 | 国产图区 | 日本免费网站在线观看 | 亚洲欧美韩日 | 日本黄色网络 | 国产无码精品一区二区 | 国产农村妇女毛片精品 | 一本—道久久a久久精品蜜桃 | 日韩精品人妻一区二区中文字幕 | 中文字幕视频免费观看 | 亚洲精品污 | 男女视频网站 | 老司机精品视频网站 | 日本精品在线 | 超碰伊人网 | av丝袜在线观看 | 六月久久 | 69欧美视频 | 97超碰免费| 婷婷色九月 | 午夜91视频 | 香蕉视频黄在线观看 | 午夜影院久久 | 亚欧美日韩 | 免费黄色在线播放 | a级在线观看视频 | 欧美一区二区三区四区在线观看 | 漂亮人妻洗澡被公强 日日躁 | 一级黄毛片| 九九热免费在线视频 | 午夜伦理在线观看 | 中文字幕在线观看第二页 | 色欧美片视频在线观看 | 精品午夜一区二区 | 久久精工是国产品牌吗 | 亚洲第一色网 | 午夜伦理av | 91丨国产| 日韩一区在线观看视频 | 美女一区二区三区 | 69黄色片 | 国产精品第100页 | 男女福利视频 | 亚洲综合久 | 成人作爱视频 | 国产夜夜嗨 | 亚洲黄网av | 美女露出让男生揉的视频 | 中文字幕视频免费观看 | 欧美夜夜骑 | 超碰超碰97 | 最近2019中文字幕大全第二页 | 午夜电影你懂的 | 午夜在线视频免费观看 | 成人一区二区av | 黄页av| 99re视频精品| 91原创国产| 38在线视频 | 深夜视频在线 | 男人的天堂在线视频 | 日韩三级视频 | 免费视频91蜜桃 | 免费看麻豆 | 国产成人精品网站 | 黄色片子一级 | heyzo亚洲 | 国产二区三区视频 | 国产区免费| 日本黄色一区二区 | 一区视频在线免费观看 | 99re最新| 91久久综合精品国产丝袜蜜芽 | 中文字幕永久视频 | 亚洲图片欧美激情 | 精品国产乱码久久久久久蜜臀网站 | 国产精品福利在线播放 | 日韩欧美一区在线观看 | 亚洲操操操| 中文字幕精品一区二区精品 |