python自带的用户代理(python动态代理)

发布时间:2022-11-14

本文目录一览:

  1. python 如何编写代理服务器
  2. 如何使用服务器代理 python使用代理服务器
  3. python 怎样设置代理访问http请求
  4. 如何在python配置动态转发代理?
  5. 「2022 年」崔庆才 Python3 爬虫教程 - 代理的使用方法

python 如何编写代理服务器

from bottle import run, route, request, response
from urllib.request import urlopen
@route('url:re:.*')
def get_method(url):
    data = urlopen(url)
    return data.read()
run(host='0.0.0.0', port=3456, debug=True)

我简单写一个,使用bottle框架,注意不要使用IE的代理,使用别的浏览器如Firefox代理到 127.0.0.1:3456

如何使用服务器代理 python使用代理服务器

小鸟云服务器(niaoyun)实例创建好之后,您可以使用以下任意一种方式登录服务器:

  • 远程桌面连接(Microsoft Terminal Services Client, MSTSC):采用这种方式登录,请确保实例能访问公网。如果在创建实例时没有购买带宽,则不能使用远程桌面连接。
  • 管理终端VNC:无论您在创建实例时是否购买了带宽,只要您本地有网页浏览器,都可以通过管理控制台的管理终端登录实例。

使用远程桌面连接(MSTSC)登录实例

  1. 打开开始菜单远程桌面连接,或在开始菜单搜索中输入 mstsc。也可以使用快捷键 Win+R 来启动运行窗口,输入 mstsc 后回车启动远程桌面连接。
  2. 在远程桌面连接对话框中,输入实例的公网IP地址。单击“显示选项”。
  3. 输入用户名,如小鸟云默认为 niaoyun。单击“允许我保存凭据”,然后单击“连接”。这样以后登录就不需要手动输入密码了。

python 怎样设置代理访问http请求

有几种方法。一种是设置环境变量 http_proxy,它会自动访问这个。另外一种是你使用 urllib2 的时候,在参数里加上代理。还有一个是 urllib 上指定。 比如:

import urllib
urllib.urlopen("某网站", proxies={'http:': "某代理IP地址:代理的端口"})

使用QT时,它的浏览器设置代理要在浏览器初始化参数里指定。

如何在python配置动态转发代理?

你好,首先你需要一个 middlewares.py,如下:

import random
from settings import UAPOOL
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware
class Uamid(UserAgentMiddleware):
    def __init__(self, user_agent=''):
        self.user_agent = user_agent
    def process_request(self, request, spider):
        thisua = random.choice(UAPOOL)
        print("当前使用User-Agent是:" + thisua)
        request.headers.setdefault('User-Agent', thisua)

settings.py 文件中添加用户 UserAgent 的信息:

# 设置用户代理池,那些动态代理就放到这里了
UAPOOL = [
    "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
]

「2022 年」崔庆才 Python3 爬虫教程 - 代理的使用方法

前面我们介绍了多种请求库,如 urllibrequestsSeleniumPlaywright 等用法,但是没有统一梳理代理的设置方法,本节我们来针对这些库来梳理下代理的设置方法。 在本节开始之前,请先根据上一节了解一下代理的基本原理,了解了基本原理之后我们可以更好地理解和学习本节的内容。 另外我们需要先获取一个可用代理,代理就是 IP 地址和端口的组合,就是 IP:端口 这样的格式。如果代理需要访问认证,那就还需要额外的用户名密码两个信息。

获取代理

使用搜索引擎搜索 “代理” 关键字,可以看到许多代理服务网站,网站上会有很多免费或付费代理,比如快代理的免费 HTTP 代理:上面就写了很多免费代理,但是这些免费代理大多数情况下并不一定稳定,所以比较靠谱的方法是购买付费代理。付费代理的各大代理商家都有套餐,数量不用多,稳定可用即可,我们可以自行选购。 另外除了购买付费 HTTP 代理,我们也可以在本机配置一些代理软件,具体的配置方法可以参考,软件运行之后会在本机创建 HTTP 或 SOCKS 代理服务,所以代理地址一般都是 127.0.0.1: 这样的格式,不同的软件用的端口可能不同。 这里我的本机安装了一部代理软件,它会在本地 7890 端口上创建 HTTP 代理服务,即代理为 127.0.0.1:7890。另外,该软件还会在 7891 端口上创建 SOCKS 代理服务,即代理为 127.0.0.1:7891,所以只要设置了这个代理,就可以成功将本机 IP 切换到代理软件连接的服务器的 IP 了。 在本章下面的示例里,我使用上述代理来演示其设置方法,你也可以自行替换成自己的可用代理。 设置代理后,测试的网址是 http://httpbin.org/ip,访问该链接我们可以得到请求的相关信息,其中返回结果的 origin 字段就是客户端的 IP,我们可以根据它来判断代理是否设置成功,即是否成功伪装了 IP。

urllib 设置代理

from urllib.request import ProxyHandler, build_opener
proxy = '127.0.0.1:7890'
proxy_handler = ProxyHandler({
    'http': 'http://' + proxy,
    'https': 'https://' + proxy
})
opener = build_opener(proxy_handler)
response = opener.open('http://httpbin.org/ip')
print(response.read())

运行结果如下:

{
  "origin": "代理IP"
}

如果遇到需要认证的代理,我们可以用如下的方法设置:

proxy = 'username:password@127.0.0.1:7890'

如果代理是 SOCKS5 类型,可以用如下方式设置代理:

pip install PySocks
from urllib.request import ProxyHandler, build_opener
proxy = '127.0.0.1:7891'
proxy_handler = ProxyHandler({
    'http': 'socks5://' + proxy,
    'https': 'socks5://' + proxy
})
opener = build_opener(proxy_handler)
response = opener.open('http://httpbin.org/ip')
print(response.read())

requests 设置代理

import requests
proxies = {
    'http': 'http://127.0.0.1:7890',
    'https': 'http://127.0.0.1:7890'
}
response = requests.get('http://httpbin.org/ip', proxies=proxies)
print(response.text)

如果代理需要认证:

proxies = {
    'http': 'http://username:password@127.0.0.1:7890',
    'https': 'http://username:password@127.0.0.1:7890'
}

如果需要使用 SOCKS 代理:

pip install requests[socks]
proxies = {
    'http': 'socks5://127.0.0.1:7891',
    'https': 'socks5://127.0.0.1:7891'
}

httpx 设置代理

import httpx
proxies = {
    'http://': 'http://127.0.0.1:7890',
    'https://': 'http://127.0.0.1:7890'
}
response = httpx.get('http://httpbin.org/ip', proxies=proxies)
print(response.text)

对于需要认证的代理:

proxies = {
    'http://': 'http://username:password@127.0.0.1:7890',
    'https://': 'http://username:password@127.0.0.1:7890'
}

对于 SOCKS 代理:

pip install httpx-socks

同步模式:

from httpx_socks import SyncProxyTransport
transport = SyncProxyTransport.from_url('socks5://127.0.0.1:7891')
response = httpx.get('http://httpbin.org/ip', transport=transport)
print(response.text)

异步模式:

from httpx_socks import AsyncProxyTransport
transport = AsyncProxyTransport.from_url('socks5://127.0.0.1:7891')
async with httpx.AsyncClient(transport=transport) as client:
    response = await client.get('http://httpbin.org/ip')
    print(response.text)

Selenium 设置代理

对于无认证的代理:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://127.0.0.1:7890')
browser = webdriver.Chrome(options=options)
browser.get('http://httpbin.org/ip')

对于认证代理: 需要在本地创建一个 manifest.json 配置文件和 background.js 脚本来设置认证代理。运行代码之后,本地会生成一个 proxy_auth_plugin.zip 文件来保存当前配置。 对于 SOCKS 代理:

options.add_argument('--proxy-server=socks5://127.0.0.1:7891')

aiohttp 设置代理

import aiohttp
import asyncio
async def fetch():
    async with aiohttp.ClientSession() as session:
        async with session.get('http://httpbin.org/ip', proxy='http://127.0.0.1:7890') as response:
            print(await response.text())
asyncio.run(fetch())

对于认证代理:

session.get('http://httpbin.org/ip', proxy='http://username:password@127.0.0.1:7890')

对于 SOCKS 代理:

pip install aiohttp-socks
from aiohttp_socks import ProxyConnector, ProxyType
connector = ProxyConnector(proxy_type=ProxyType.SOCKS5, host='127.0.0.1', port=7891)
async with aiohttp.ClientSession(connector=connector) as session:
    async with session.get('http://httpbin.org/ip') as response:
        print(await response.text())

Pyppeteer 设置代理

from pyppeteer import launch
import asyncio
async def main():
    browser = await launch(args=['--proxy-server=http://127.0.0.1:7890'])
    page = await browser.newPage()
    await page.goto('http://httpbin.org/ip')
    content = await page.content()
    print(content)
    await browser.close()
asyncio.run(main())

对于 SOCKS 代理:

await launch(args=['--proxy-server=socks5://127.0.0.1:7891'])

Playwright 设置代理

from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "http://127.0.0.1:7890"})
    page = browser.new_page()
    page.goto("http://httpbin.org/ip")
    print(page.content())
    browser.close()

对于 SOCKS 代理:

browser = p.chromium.launch(proxy={"server": "socks5://127.0.0.1:7891"})

对于有用户名和密码的代理:

browser = p.chromium.launch(proxy={"server": "http://127.0.0.1:7890", "username": "foo", "password": "bar"})

以上我们就总结了各个请求库的代理使用方式,各种库的设置方法大同小异,学会了这些方法之后,以后如果遇到封 IP 的问题,我们可以轻松通过加代理的方式来解决。