HTTP请求头中的User-Agent字段
字符搬运工-蓝天
原创
关注
0点赞·502人阅读
引言
当我们使用python爬虫爬取数据时,经常会遇到爬取请求拒绝的问题,通过查看请求信息,我们会发现,一般写的爬虫会默认告诉服务器自己发送了一个Python爬取请求,而一般网站是不允许被爬虫访问的,可能是因为会涉及到商业问题。最后,通过更改User-Agent字段就可以轻易骗过该网站。
那么User-Agent到底是什么呢?
User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般会拒绝,如果是用户浏览器,就会应答。
User-Agent字段
1. 基本格式
我们在Chrome内核的浏览器中查看User-Agent的结果如下:
Mozilla/5.0 (Windows NT 10.0Win64x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36
登录后复制
User-Agent的通常格式如下:
Mozilla/5.0 (平台) 引擎版本 浏览器版本号
登录后复制
2. 第一部分:Mozilla/5.0
历史上各种版本的浏览器互相竞争,当时想获得图文并茂的网页,就必须宣称自己是 Mozilla 浏览器。由此导致如今User-Agent里通常都带有Mozilla字样,出于对历史的尊重,大家都会默认填写该部分。
3. 第二部分:平台
平台这部分可由多个字符串组成,用英文半角分号分开。
Windows系统平台这部分内容如下:
Windows NT 5.0 // 如 Windows 2000
Windows NT 5.1 // 如 Windows XP
Windows NT 6.0 // 如 Windows Vista
Windows NT 6.1 // 如 Windows 7
Windows NT 6.2 // 如 Windows 8
Windows NT 6.3 // 如 Windows 8.1
Windows NT 10.0 // 如 Windows 10
Win64x64 // Win64 on x64
WOW64 // Win32 on x64
登录后复制
其中,Windows NT 10.0是指我使用的操作系统的版本,比如我使用的win10对应的就是Windows NT 10.0,如果我使用win7对应的就是Windows NT 6.1。Win64x64是指我的操作系统是64位的。
Linux系统平台这部分内容如下:
X11Linux i686// Linux 桌面,i686 版本
X11Linux x86_64// Linux 桌面,x86_64 版本
X11Linux i686 on x86_64 // Linux 桌面,运行在 x86_64 的 i686 版本
登录后复制
macOS系统平台这部分内容如下:
MacintoshIntel Mac OS X 10_9_0 // Intel x86 或者 x86_64
MacintoshPPC Mac OS X 10_9_0 // PowerPC
MacintoshIntel Mac OS X 10.12// 不用下划线,用点
登录后复制
4. 第三部分:引擎版本
历史上,苹果依靠了WebKit内核开发出Safari浏览器,WebKit包含了WebCore引擎,而WebCore又从KHTML衍生而来。由于历史原因,KHTML引擎需要声明自己是“类似Gecko”的,因此引擎部分通常写为:AppleWebKit/537.36 (KHTML, like Gecko)…Safari/537.36。再后来,Google开发Chrome也是用了WebKit内核,于是也跟着这么写。借用Littern的一句话:“Chrome 希望能得到为Safari编写的网页,于是决定装成Safari,Safari使用了WebKit渲染引擎,而WebKit呢又伪装自己是KHTML,KHTML呢又是伪装成Gecko的。同时所有的浏览器又都宣称自己是Mozilla。”。不过,后来Chrome 28某个版本改用了blink内核,但还是保留了这些字符串。而且,最近的几十个版本中,这部分已经固定,没再变过。
设置系统日期和时间 转载2022-09-27 21:31:49
dxm809
码龄12年
关注
(1)为了使用DllImportAttribute类,需要引入命名空间:
using System.Runtime.InteropServices
(2)自定义类SetSystemDateTime用于设置系统时间。代码如下:
public class SetSystemDateTime
{
[DllImportAttribute( "Kernel32.dll" )]
public static extern void GetLocalTime(SystemTime st )
[DllImportAttribute( "Kernel32.dll" )]
public static extern void SetLocalTime(SystemTime st )
}
(3)自定义类SystemTime用于定义日期时间类。代码如下:
[StructLayoutAttribute( LayoutKind.Sequential)]
public class SystemTime
{
public ushort vYear
public ushort vMonth
public ushort vDayOfWeek
public ushort vDay
public ushort vHour
public ushort vMinute
public ushort vSecond
}
(4)选择一个时间,单击“设置系统新日期时间”按钮,在该按钮的Click事件下,调用自定义类SetSystemDateTime和SystemTime,修改当前系统日期时间。代码如下:
private void button2_Click(object sender, EventArgs e)
{
//设置系统当前日期时间
if (MessageBox.Show("您真的确定更改系统当前日期和时间吗?", "信息提示", MessageBoxButtons.OK) == DialogResult.OK)
{
DateTime Year = this.dateTimePicker1.Value
SystemTime MySystemTime = new SystemTime()
SetSystemDateTime.GetLocalTime(MySystemTime)
MySystemTime.vYear = (ushort)this.dateTimePicker1.Value.Year
MySystemTime.vMonth = (ushort)this.dateTimePicker1.Value.Month
MySystemTime.vDay = (ushort)this.dateTimePicker1.Value.Day
MySystemTime.vHour = (ushort)this.dateTimePicker2.Value.Hour
MySystemTime.vMinute = (ushort)this.dateTimePicker2.Value.Minute
MySystemTime.vSecond = (ushort)this.dateTimePicker2.Value.Second
SetSystemDateTime.SetLocalTime(MySystemTime)
}
}
原文链接:http://wjhsh.net/08shiyan-p-2221522.html
打开CSDN,阅读体验更佳
c#修改系统时间的方法_星辰海阁的博客_c#修改系统时间
C#没有提供直接的方法对系统时间进行设定,一般我们只能通过DateTime.Now获取系统时间,但是并不能对这个时间进行修改。这里对了解的主要的两种方式做了个整理,希望对大家有帮助。 方法一,用API函数的方式来修改时间。 首先定义API函数 [csh...
继续访问
如何使用C#修改本地Windows系统时间_chinaherolts2008的博客-CSDN博 ...
C#提升管理员权限修改本地Windows系统时间 在桌面应用程序开发过程中,需要对C盘下进行文件操作或者系统参数进行设置,例如在没有外网的情况下局域网内部自己的机python基础教程制进行时间同步校准,这是没有管理员权限便无法进行设置。
继续访问
最新发布 C++Windows修改系统时间
Windows C语言/C++的system() 函数可以用cmd控制台DOS指令,在管理员模式修改系统时间,因此可编写C程序一键修改系统时间。
继续访问
c#修改系统时间的方法
C#没有提供直接的方法对系统时间进行设定,一般我们只能通过DateTime.Now获取系统时间,但是并不能对这个时间进行修改。这里对了解的主要的两种方式做了个整理,希望对大家有帮助。 方法一,用API函数的方式来修改时间。 首先定义API函数 [csharp] view plaincopy [StructLayout( LayoutKind.
继续访问
C# 修改系统时间_Jacob Ni的博客
C# 修改系统时间 由于手头有一个物联网的触摸屏程序需要提供用户修改系统时间的功能。该功能需要win32的API函数提供支持。具体代码如下: internalclassSystemTimeWin32 { [DllImport("Kernel32.dll",CharSet = CharSet.Ansi)]publicstatic...
继续访问
C#修改本机系统时间(适用于win2003 win2008 windowXp 系统)
Convert.ToUInt16(currentTime.Minute)sysTime.second = Convert.ToUInt16(currentTime.Second)sysTime.milliseconds = Convert.ToUInt16(currentTime.Millisecond)//SetSystemTime()默认设置的为UTC时间,设定时比北京时间多了8个...
继续访问
C#修改电脑系统时间
C#修改电脑系统时间
继续访问
C#提升管理员权限修改本地Windows系统时间
C#提升管理员权限修改本地Windows系统时间 在桌面应用程序开发过程中,需要对C盘下进行文件操作或者系统参数进行设置,例如在没有外网的情况下局域网内部自己的机制进行时间同步校准,这是没有管理员权限便无法进行设置。 1. 首先需要获得校准时间,两种方式: 通过可上网的电脑进行外部获取当前时间。 通过NTP实现 //NTP消息大小摘要是16字节 (RFC 2030) byte[] ntpData = new byte[48]//设置跳跃指示器、版本号和模式值 // LI = 0
继续访问
C# 修改windows系统时间_白白小白菜的博客_c#修改系统时间
C# 修改windows系统时间 由于软件系统需要与MES做数据对接,设备电脑时间与MES端有相差,而采集数据的时间需要做到统一。当然不建议修改本机系统的时间,如需与mes时间一致,建议软件项目使用自身时间。由于开发软件受限,当然更多的是技术有限,...
继续访问
C#修改系统时间
main: class Program { static string inputstatic UpdateHelper updTimestatic void Main(string[] args) { Console.WriteLine("START APPLICATION
继续访问
热门推荐 C# 爬取 在线时间 设置 Windows系统时间
效果图: 最近发现自己的小主机每次关机后,时间都不准时,这个问题一般都是主板的电池没电导致的,某宝买一个即可,但毕竟是写程序的,为什么不能写一个程序校准呢,每次开机运行一下即可, 玩玩就即可还是要去换一个电池的… 时间来源: 北京时间官网 时间源是爬取北京时间的官网来的然后在就行字符串的分割得到需要的部分 C# 网络爬虫 抓取“北京标准时间“ 网页请求 这篇文章有详细介绍 在请求网页时,如果网络不通畅,导致网页加载比较慢,这时就会导致窗体的假死,所以需要在按钮里定义线程,让线程去执行这个方法 线程
继续访问
VC++ SetLocalTime与SetSystemTime区别
VC++ SetLocalTime与SetSystemTime区别 SetLocalTime设置北京时间;SetSystemTime设置格林威治时间,比北京时间晚8小时,需要调整wHour。 初始化SYSTEMTIME是不能忽略其成员变量wDayOfWeek,wMilliseconds(可lpSystemTime->wDayOfWeek = -1lpSystemT
继续访问
C# 获取系统时间的方法
C# 获取系统时间的方法)前言获取系统当前时间获取当前时间的前一秒时间 前言 通过本篇文章记录在C#的学习过程中遇到的各种获取系统时间的方法,记录各种系统时间的应用场景。 获取系统当前时间 通过C#获取系统当前时间的方式可以通过下面的方式 string dat额= DateTime.Now.ToLocalTime().ToString()打印的结果的格式是下面的这种形式 2022/3/31 10:11:26 当需要设置时间的显示格式时,可以使用下面的代码 string date = DateTime
继续访问
.net 获取网络时间(北京时间)24小时制
近些年来Python非常流行,Python是一种面向对象的解释型计算机程序设计语言,Python语法简洁清晰,易读性以及可扩展性,Python具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起,常被称为胶水语言,可以应用在图形处理,数学处理,Web编程,多媒体应用等领域。定位(推荐学习:Python视频教程)在过去的这么长时间里,在嵌入式开发领域中开发语言以C/C++为主,如今基于Python的MicroPython已经涉入到该领域中,MicroPython是一位叫Damien George的工程师,基于ANSI C(C语言标准),然后在语法上又遵循了Python的规范,主要是为了能在嵌入式硬件上(这里特指微控制器级别)更易于的实现对底层的操作,MicroPython官方提供的硬件开发板叫PyBoard,除了官方提供的开发板外,还有一些嵌入式硬件也被成功移植了MicroPython,例如:Esp8266,WiPy,Espruino Pico,STM32F4 Discovery等。
MicroPython pyboard是一个紧凑的电子电路板,在裸机上运行MicroPython,为您提供一个低级Python操作系统,可用于控制各种电子项目。
MicroPython包含许多高级功能,如交互式提示,任意精度整数,闭包,列表理解,生成器,异常处理等。然而它非常紧凑,可以在256k的代码空间和16k的RAM内运行。
MicroPython旨在尽可能与普通Python兼容,以便您轻松地将代码从桌面传输到微控制器或嵌入式系统。
pyboard是官方的MicroPython微控制器板,完全支持软件功能。硬件有:
STM32F405RG单片机
具有硬件浮点的168 MHz Cortex M4 CPU
1024KiB闪存ROM和192KiB RAM
Micro USB连接器,用于电源和串行通信
Micro SD卡插槽,支持标准和高容量SD卡
3轴加速度计(MMA7660)
带可选备用电池的实时时钟
左侧和右侧边缘为24 GPIO,底行为5 GPIO,底部有LED和开关GPIO
3个12位模数转换器,16引脚,4个模拟地屏蔽
2x 12位数模转换器(DAC),可在引脚X5和X6上使用
4个LED(红色,绿色,黄色和蓝色)
1个复位和1个用户开关
板载3.3V LDO稳压器,能够提供高达250mA的电压,输入电压范围为3.6V至16V
ROM中的DFU引导加载程序,可轻松升级固件
Python本来就是非常容易入门的语言,同时也是应用广泛的语言,MicroPython将这用容易学习和使用的语言带到了嵌入式开发中,可以直接操作硬件,并且不需要编译和下载,可以快速的看到程序的结果,这是非常好的体验。PyBoard精致小巧是一块漂亮的开发板,可以方便的学习和开发,另外MicroPython也支持更多的平台,例如:STM32F4 Discovery Board,NUCLEO-F401RE Board,NUCLEO-F767ZI Board,ESP8266,WiPy等,以上的这些开发板都可以支持MicroPython,在开发板内刷上固件就可以使用了。MicroPython带来了全新的开发体验,有兴趣的同学可以试试。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python能做嵌入式吗的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!