用my_fake_useragent生成headers

import random
from my_fake_useragent import UserAgent

def gererateUserAgent():
    headers = {}
    headers_list = ua.get_useragent_list()
    headers[‘User-Agent‘] = random.choice(headers_list)
    headers = {‘User-Agent‘: headers[‘User-Agent‘] }

 用生成的headers去请求网页总是一会就报错了

requests.exceptions.InvalidHeader: Invalid return character or leading space in header: user-agent

 查询是因为生成的headers会出现空格,实例如下

#错误的headers
headers = {  # 请求头
			"user-agent":" Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
		}

#正确的headers
headers = {  # 请求头
			"user-agent":"Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"
		}

  为避免后续错误,通过headers_list内容,手动生成了一个headers字典,用作以后请求

headers_list = [
        ‘Opera/7.10 (Windows NT 5.1; U)  [en]‘,
        ‘Opera/9.80 (X11; Linux i686; U; it) Presto/2.5.24 Version/10.54‘,
        ‘Opera/9.64 (X11; Linux i686; U; de) Presto/2.1.1‘,
        ‘Mozilla/5.0 (Windows NT 5.2; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.70‘,
        ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB7.0‘,
        ‘Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-gb) AppleWebKit/85.8.5 (KHTML, like Gecko) Safari/85.8.1‘,
    ]

  

原文地址:https://www.cnblogs.com/lijifei/p/11969839.html

时间: 2024-11-02 17:52:55

用my_fake_useragent生成headers的相关文章

框架1

目的 实现一个简单的web框架 只实现rest(有一整套严格的规范) 常见框架有 : Rails pyramid bottle web.py flask 理解框架实现原理 动态网页的发展历程最早的时候,web就是一些静态文件 最早的动态页面是CGI实现的(动态生成返回的内容) CGI怎么工作? 当请求一个地址的时候,http服务器就会启动一个外部程序,并且把外部程序的输出返回给用户. CGI协议规范了http和外部程序的通信方式通信方式:输入:通过环境变量   http设置环境变量输出:通过标准

Python 爬虫 ajax爬取马云爸爸微博内容

ajax爬取情况 有时候我们在用 Requests 抓取页面的时候,得到的结果可能和在浏览器中看到的是不一样的,在浏览器中可以看到正常显示的页面数据,但是使用 Requests 得到的结果并没有,这其中的原因是 Requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是页面又经过 JavaScript 处理数据后生成的结果,这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在了 HTML 文档中的,也可能是经过 JavaScript 经过特定算法计算后生成的 项目代码如

爬虫——综合案例流程版

爬虫综合案例 开发步骤: 导入类库 创建爬虫通用类 初始化init方法 类中编写重试下载模块 类中编写真正下载模块 类外编写保存函数 类外编写获取robots.txt函数 类外编写抽取网址函数 类中编写网址正常化函数 创建下载限流类 爬虫通用类封装run方法 创建爬虫对象运行 导入类库 requests:爬虫请求类库 hashlib:哈希加密类库 queue:队列 re:正则 time:时间 threading>Thread:多线程 datetime>datetime:日期时间 urllib&

用java打造一个生成cookies和headers字典的工具

先上效果图: 经常抓包时出来的数据是这样的: 每次模拟的话都需要手动构建这些数据的键值对 这个操作很繁琐而且很容易出错所以我准备做一个这种小工具 分析文本发现可以直接搜索替换 java源代码: package com.mycompany.myapp2; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; public class MainActivity extend

Swagger(webapi自动生成接口说明文档)

1.引入Swagger.Net.UI和Swashbuckle包 2.卸载重复包Swagger.Net 3.多余的SwaggerUI文件夹 4.项目属性->勾选生成xml文档文件 5.添加类SwaggerCachingProvider和修改SwaggerConfig文件 using Swashbuckle.Swagger; using System; using System.Collections.Concurrent; using System.Collections.Generic; usi

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成CREATE和INSERT T-SQL脚本. Mssql-scripter是一个跨平台的命令行工具,功能等同于SQL Server Management Studio中的Generate and Publish Scripts Wizard. 咱们能够在Linux.macOS和Windows上使用它

js动态生成数据列表

我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js来动态生成表格. 首先我们需要先写好页面的样式. html部分 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; chars

利用谷歌 kaptcha 进行验证码生成

1 package main.com.smart.controller; 2 3 import com.google.code.kaptcha.Producer; 4 import main.com.smart.utils.CaptchaProducer; 5 import main.com.smart.utils.RedisClient; 6 import org.apache.log4j.Logger; 7 import org.apache.log4j.spi.LoggerFactory;

tablesorter对于动态生成的table无法使用解决办法

需要对动态生成的table增加搜索功能,发现tablesorter正好满足需求,但动态生成table时,无法使用,发现一个笨办法, 在生成table之前,先写一个静态的<tr></tr>,问题即可解决 <script> $(document).ready(function(){ render_table(){}; $("#myTable").tablesorter({ "theme": "blue", &quo