Python3 使用代理的两种方式

原文链接: Python3 使用代理的两种方式

常见代理网站

https://www.kuaidaili.com/free/

http://www.xicidaili.com/

常见agent

一、为何要设置User Agent

    有一些网站不喜欢被爬虫程序访问,所以会检测连接对象,如果是爬虫程序,也就是非人点击访问,它就会不让你继续访问,所以为了要让程序可以正常运行,需要隐藏自己的爬虫程序的身份。此时,我们就可以通过设置User Agent的来达到隐藏身份的目的,User Agent的中文名为用户代理,简称UA。

    User Agent存放于Headers中,服务器就是通过查看Headers中的User Agent来判断是谁在访问。在Python中,如果不设置User Agent,程序将使用默认的参数,那么这个User Agent就会有Python的字样,如果服务器检查User Agent,那么没有设置User Agent的Python程序将无法正常访问网站。

    Python允许我们修改这个User Agent来模拟浏览器访问,它的强大毋庸置疑。

二、常见的User Agent

1.Android

  • Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
  • Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
  • Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

2.Firefox

  • Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
  • Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0

3.Google Chrome

  • Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
  • Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19

4.iOS

  • Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
  • Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3

    上面列举了Andriod、Firefox、Google Chrome、iOS的一些User Agent,直接copy就能用。

三、设置User Agent的方法

通过代理隐藏自己的ip信息

设置代理字典

1proxyDict = { 2 "http" : self.http_proxy, 3 "https" : self.https_proxy, 4 "ftp" : self.ftp_proxy 5 }

有密码的代理

1proxies = { 2 "http": "http://user:pass@10.10.1.10:3128/" 3}

第一种requests模块

1# 作者:十四君 2# 链接:https://www.zhihu.com/question/23825711/answer/129293723 3# 来源:知乎 4# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 5 6# encoding=utf8 7import requests 8import sys 9 10type = sys.getfilesystemencoding() 11s = requests.session() 12proxie = { 13 # 'http': 'http://122.193.14.102:80' 14 # 'http': 'http://61.135.217.7:80' 15 # 'http': "http://61.155.164.109:3128" 16 # 'https': "https:175.8.85.61:8118", 17 # "http": "http://61.178.238.122:63000" 18 # 'https': "https://125.88.177.128:3128", 19 "http": "http://118.193.107.174:80" 20} 21 22url = 'http://www.ahaoboy.cn:888' 23 24print(url) 25response = s.get(url, verify=False, proxies=proxie, timeout=20) 26print(response.text)

第二种urlopen模块

1from urllib import request 2 3if __name__ == "__main__": 4 # 访问网址 5 url = 'http://www.ahaoboy.cn:888/' 6 # 这是代理IP 7 proxy = { 8 # 'http': '106.46.136.112:808' 9 # 'https': "https://112.112.236.145:9999", 10 "http": "http://118.193.107.174:80" 11 } 12 # 创建ProxyHandler 13 proxy_support = request.ProxyHandler(proxy) 14 # 创建Opener 15 opener = request.build_opener(proxy_support) 16 # 添加User Angent 17 opener.addheaders = [('User-Agent', 18 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')] 19 # 安装OPener 20 request.install_opener(opener) 21 # 使用自己安装好的Opener 22 response = request.urlopen(url) 23 # 读取相应信息并解码 24 html = response.read().decode("utf-8") 25 # 打印信息 26 print(html)
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )