首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Python2.x中更改urllib2请求的源端口和ip

在Python2.x中,可以使用urllib2库来发送HTTP请求,但是它不支持直接修改请求的源端口和IP地址。如果需要更改源端口和IP地址,可以使用socket库来实现。

以下是一个示例代码,演示如何使用socket库来更改urllib2请求的源端口和IP地址:

代码语言:txt
复制
import socket
import urllib2

# 设置源IP地址和端口
source_ip = '192.168.1.100'
source_port = 12345

# 创建一个自定义的socket连接
socket.setdefaulttimeout(10)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((source_ip, source_port))

# 定义一个自定义的urlopen函数,通过修改socket连接来实现更改源IP地址和端口
def urlopen_with_source(url):
    # 修改urllib2的默认socket连接
    opener = urllib2.build_opener(urllib2.HTTPHandler)
    opener.open = sock.connect

    # 使用自定义的urlopen函数发送请求
    response = opener.open(url)
    return response

# 使用自定义的urlopen函数发送请求
response = urlopen_with_source('https://www.example.com')

# 打印返回结果
print(response.read())

上述代码中,首先通过socket库创建一个自定义的socket连接,指定了源IP地址和端口。然后定义了一个自定义的urlopen_with_source函数,通过修改urllib2的默认socket连接来实现更改源IP地址和端口的功能。最后,调用urlopen_with_source函数发送HTTP请求,并打印返回结果。

请注意,以上示例中只是演示如何修改源IP地址和端口,实际使用时需要根据具体情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python接口测试之urllib.parse.urlencode

实操   在我之前文章https://www.cnblogs.com/liudinglong/p/12389650.html中讲过requests库中post方法请求参数的选择,详细介绍了如果key=value...这里我们需要使用python3中urllib库,现在python2停更了,这里就再简单复习一下urllib,urllib2,urllib3以及requests之间与python的关系。   ...python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests。   ...python3只要记住有个urllib,两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. ...Python3中也有urllib和urllib3两个库,其中urllib几乎是Python2中urllib和urllib2两个模块的集合,所以我们最常用的urllib模块,而urllib3则作为一个拓展模块使用

2.1K30
  • python爬虫(四)_urllib2库的基本使用

    本篇我们将开始学习如何进行网页抓取,更多内容请参考:python学习指南 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。...urllib2是Python2.x自带的模块(不需要下载,导入即可使用) urllib2官网文档:https://docs.python.org/2/library/urllib2.html urllib2...#导入urllib2库 import urllib2 #向指定的url发送请求,并返回服务器的类文件对象 response = urllib2.urlopen("http://www.baidu.com...") #类文件对象支持文件对象的操作方法,如read()方法读取文件 html = response.read() #打印字符串 print(html) 执行写好的python代码,将打印结果: python2...urllib2默认的User-Agent头为:Python-urllib/x.y(x和y是Python主版本和次版本号,例如Python-urllib/2.7) #-*- coding:utf-8 -*

    1K100

    两个微型的函数例子

    hello小伙伴们大家好,还记得昨天的函数参数的文章吗?你get到了多少呢?...实际的工作中并没有那么复杂,一个通用的函数定义形如: def func_name(*args, **kwargs): pass 这样一个函数基本上就可以通吃了。...在Python2.x中,是urllib2库,在Python3.x中,urllib2库被重命名为urllib,并且被分割成了几个子模块:urllib.request,urllib.parse,urllib.error...urllib是python的标准库,我们不需要安装额外的库就可以使用它。它包含了很多方法,用来请求数据、处理cookies,甚至是改变元数据,如headers或用户客户端。...(results.ip_list_file)) else: print(get_country(results.ip)) 该脚本需要接收一个参数,要么是传入一个单个的IP地址,要么传入一个包含很多

    82750

    Python爬虫入门这一篇就够了

    爬虫三要素 抓取 分析 存储 基础的抓取操作 1、urllib 在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2。...客户端通过识别请求携带的cookie,确定是否登录 ? 2、cookie登录 我们可以将登录的cookie存储在文件中, ?...很多网站会设置user-agent白名单,只有在白名单范围内的请求才能正常访问。所以在我们的爬虫代码中需要设置user-agent伪装成一个浏览器请求。...有时候服务器还可能会校验Referer,所以还可能需要设置Referer(用来表示此时的请求是从哪个页面链接过来的) ? 如下是CSDN中的Request Header中的信息 ?...2、通过IP来限制 当我们用同一个ip多次频繁访问服务器时,服务器会检测到该请求可能是爬虫操作。因此就不能正常的响应页面的信息了。 解决办法常用的是使用IP代理池。网上就有很多提供代理的网站、 ?

    89410

    Python爬虫入门这一篇就够了「建议收藏」

    爬虫三要素 抓取 分析 存储 基础的抓取操作 1、urllib 在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2。...、cpu类型、浏览器类型和版本。...很多网站会设置user-agent白名单,只有在白名单范围内的请求才能正常访问。所以在我们的爬虫代码中需要设置user-agent伪装成一个浏览器请求。...有时候服务器还可能会校验Referer,所以还可能需要设置Referer(用来表示此时的请求是从哪个页面链接过来的) 如下是CSDN中的Request Header中的信息 2、通过IP来限制 当我们用同一个...ip多次频繁访问服务器时,服务器会检测到该请求可能是爬虫操作。

    38710

    LVS负载均衡集群架构

    :80,但实际的源地址是RIP1的地址) 5:LB将数据返回给请求的客户端用户,完成整个流程的访问 因此WEB访问量很大的时候,LB就会有很大的负载压力,一般支持10-20台节点,但是这种模式支持IP和端口的转换功能...过程详解: 1:客户端发出请求数据包(源CIP 10.10.1.1:80 目的VIP1.1.1.1:80) 2:LB接收到数据包后,不转换地址及端口,也不重新封装,只是将数据帧中的目的地址的MAC地址改写算法调度的真实机的...(源VIP 1.1.1.1:80 目的CIP 10.10.1.1:80),完成整个访问过程 注:LB只能改写目的MAC地址,因此它不能改变请求报文的目的端口端口,LVS只支持unix和linux,但集群节点服务器可以是...解决了上述三种的缺点 解决了真实服务器能跨越VLAN通讯,只需要连接到内网即可 入站时: 目标IP更改为真实服务器的IP,源IP更改为内网的本地IP(一组内网IP) 出站时: 目标IP更改为客户端的...IP,源IP更换为VIP LVS算法介绍 LVS的调度算法决定了如何在集群节点之间分配负载压力(访问请求) 调度算法: rr轮循调度:将请求依次分配给集群的节点,这种算法适用于各个节点处理能力基本相同的情况下

    1.1K10

    爬虫正传-江湖路远-0104-狡兔三窟

    IP地址来掩盖自己的信息!...urllib2中的urlopen方式,是通过默认的HTTPHandler(HTTP请求操作对象:开锁人)直接进行操作的,如果要使用代理IP地址的方式,就需要更改使用代理操作对象(ProxyHandler...)进行代理绑定的操作,之后通过build_opener构建具体开锁人对象,完成数据的代理请求 # coding:utf-8 from urllib2 import Request, build_opener...:端口’}) my_opener = build_opener(proxy_handler) # 使用自定义代理对象访问服务器获取数据 response = my_opener.open(request...) # 打印展示数据 print(response.read()) 运行程序,程序会通过代理IP地址进行服务器数据的请求,我们通过代理服务器获取代理接受到的响应数据,此时~大虾自己的IP地址被代理隔离不会再暴露在服务器大佬的视线中了

    41110

    【Kubernetes系列】第11篇 网络原理解析(下篇)

    flannel0取到这个包,并在其上再用一个UDP包封装起来,该UDP包头部的源和目的IP分别被改成了对应节点的IP,然后发送这个新包到特定的VXLAN端口(通常是8472)。...7.网桥获取到了包,发送ARP请求,发现目标IP属于vethyyy。 8.包跨过管道对到达pod4 这就是Kubernetes中Overlay网络的工作方式,虽然不同的实现还是会有细微的差别。...这样当请求回来时,它可以un-DNAT,这意味着将源IP从Pod IP更改为Service IP。 这样,客户端就不用关心后台如何处理数据包流。...对于从节点到某些外部IP的普通通信,源IP从节点的专用IP更改为其出站数据包的公共IP,入站的响应数据包则刚好相反。...Ingress(L7 - HTTP / TCP) 许多不同的工具,如Nginx,Traefik,HAProxy等,保留了http主机名/路径和各自后端的映射。

    92830

    网络地址转换:DNAT和SNAT有啥区别?分别用于什么场景?

    DNAT的配置通常在防火墙或路由器上进行,通过将目标IP地址和端口映射到内部网络中的特定IP地址和端口,实现请求的转发。...DNAT和SNAT的区别DNAT和SNAT之间的区别主要在于它们转换的地址类型不同。DNAT将目标地址和端口号更改为不同的IP地址和端口号,以便路由器可以将数据包定向到正确的目标服务器。...相反,SNAT将源IP地址更改为路由器的IP地址。当内部计算机访问外部资源时,路由器会更改数据包中的源IP地址以防止攻击。...由于SNAT更改了源IP地址,因此目标服务器会认为请求它的计算机是路由器,而不是内部真实计算机。因此,SNAT通常用于网络安全和流量控制。...其中,目标网络地址转换(DNAT)用于将外部请求的目标IP地址转换为内部网络中的特定IP地址,而源网络地址转换(SNAT)则用于将内部网络中的源IP地址转换为公共网络可路由的IP地址。

    9.7K72

    Python爬虫基础知识:urllib2的使用技巧

    2.Timeout 设置 在老版 Python 中(Python2.6前),urllib2 的 API 并没有暴露 Timeout 的设置,要设置 Timeout 值,只能更改 Socket 的全局 Timeout...: 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求 Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。...如果需要得到某个 Cookie 项的值,可以这么做: 运行之后就会输出访问百度的Cookie值: 6.使用 HTTP 的 PUT 和 DELETE 方法 urllib2 只支持 HTTP 的 GET...这时候我们需要伪装成浏览器,这可以通过修改http包中的header来实现 11.对付"反盗链" 某些站点有所谓的反盗链设置,其实说穿了很简单,就是检查你发送请求的header里面,referer站点是不是他自己...例如,有些网站喜欢读取header中的X-Forwarded-For来看看人家的真实IP,可以直接把X-Forwarde-For改了。 ----

    1K50

    python自测100题「建议收藏」

    PYTHONPATH – 它的作用类似于PATH。此变量告诉Python解释器在何处找到导入程序的模块文件。它应该包括Python源库目录和包含Python源代码的目录。...python3.x中已经摒弃了Python2.x中采用函数式thread模块中的start_new_thread()函数来产生新线程方式。...Python自带:urllib,urllib2 第 三 方:requests 框 架:Scrapy urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。 urllib2....可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。 有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。...直接利用requests或者urllib2模拟ajax请求,对响应的json进行分析得到需要的数据。 但是有些网站把ajax请求的所有参数全部加密了,没办法构造自己所需要的数据的请求。

    5.8K20

    Python 爬虫入门—— IP代理使用

    1.关于代理   简单的说,代理就是换个身份。网络中的身份之一就是IP。比如,我们身在墙内,想要访问google、u2b、fb等,直接访问是404,所以要换个不会被墙的IP,比如国外的IP等。...对于公司来讲,买代理IP。但是对于个人的话,可能会有浪费。那么怎么办呢?网上有很多免费的代理IP网站,但是手动更改的话,很浪费时间,并且免费的IP有很多不可用。所以,我们可以用爬虫爬那么IP。...) 代码说明:     a).这里我们使用的urllib2模块,因为,这个请求有点特殊,服务器会验证请求中的header(如有疑问,可参考http的相关资料)     b).urllib2与urllib...的区别在于,urllib2发送请求的时候可携带参数(我现在只用到这点区别)     c).open()用于打开文件,第一个参数是文件的路径可以填绝对路径,例如E:\\proxy("\"在编程中是特殊字符...也可以是相对路径,比    如"../src/proxy",就是文件相对于代码的位置。第二个参数"w",代表打开文件的权限,w代表写权限,r代表读权限。这个在很多系统中都通用。

    97330

    python自测100题

    PYTHONPATH - 它的作用类似于PATH。此变量告诉Python解释器在何处找到导入程序的模块文件。它应该包括Python源库目录和包含Python源代码的目录。...python3.x中已经摒弃了Python2.x中采用函数式thread模块中的start_new_thread()函数来产生新线程方式。...Python自带:urllib,urllib2 第 三 方:requests 框 架:Scrapy urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。 urllib2....可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。 有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过第一种反爬虫。...直接利用requests或者urllib2模拟ajax请求,对响应的json进行分析得到需要的数据。 但是有些网站把ajax请求的所有参数全部加密了,没办法构造自己所需要的数据的请求。

    4.7K10

    Splunk+蜜罐+防火墙=简易WAF

    *本文原创作者:RipZ,本文属FreeBuf原创奖励计划,未经许可禁止转载 每天都会有大量的公网恶意扫描和攻击行为,在企业安全建设中,可以利用大数据来实时分析攻击,通过防火墙联动来自动封禁恶意IP,其优点是配置灵活...0×02 日志收集 部署splunk的转发器进行统一日志收集,同时可以配置splunk索引器(日志中心)的端口监听,来收集所有设备的syslog。索引器和转发器的配置安装网上也有教程,这里不再多写。...如果是扫描,日志中同一个源IP肯定会在短时间(至少持续了30秒)内有很多的错误事件 transaction c_ip maxspan=3m | whereduration>30 汇总后如下,并且需要设置实时监控...0×04 设置告警 既然可以抓到实时的扫描源IP,下一步就是要进行邮件通知安全部门。 (添加告警触发后的操作) 由此可以设置邮件告警,通告扫描的源IP。...在正常情况下,蜜罐不会被正常用户访问,何况还是SSH登录的请求,如果短时间内产生了超过2条以上的连接情况,必是恶意请求无疑,此时使用告警脚本调用防火墙API封禁恶意IP即可。

    2.7K60

    Python爬虫学习--爬虫基本架构

    ● URL管理器:管理待爬取的URL和已爬取的URL。 ● 网页下载器:将URL指定的网页下载下来,并存储为一个字符串。...网页下载器: 在Python爬虫中广泛使用urllib进行网页的读取下载,urllib是Python的标准库(就是说你不用额外安装就可以在Python编译器中运行),它包含了从网络请求数据,处理cookie...甚至改变请求头和用户代理这些元数据的函数。...在Python2.x中一般使用urllib2库,而在Python3.x中,urllib2改名为urllib.并且把urllib库细分为了三个子模块:urllib.request、urllib.parse...实例代码如下:(在Python3.x中) 第一行表示从urllib库的request模块中导入urlopen函数(urlopen函数即是最常用的网页下载器)。

    1.1K60

    SSRF安全指北

    在Python中,常用的函数有urllib(urllib2)和requests库。...网站获取URL对应的资源(在一次网络请求中,先根据域名服务器获取IP地址,再向IP地址请求资源),第二次解析域名。此时已经过了ttl的时间,解析记录缓存IP被删除。...因为请求和跳转时的域名都没有变更,本次跳转会带着之前服务端返回的精心构造过的 SessionID 进行,发送到目标的那个端口上。 6. 则达到目的,成功对目标端口发送构造过的数据,成功 SSRF。...拆开来讲,发起请求的客户端如curl,tls协议都不存在任何问题,议题作者曾表示curl在判断同源时,只判断了协议,域名,端口,但是没有判断ip,这里在笔者看来并非是curl问题,由于负载均衡等问题,域名可能对应多个...如果需要从代码层面来修复的话,需要注意一下几点: 1.去除url中的特殊字符 2.判断是否属于内网ip 3.如果是域名的话,将url中的域名改为ip 4.请求的url为3中返回的url 5.请求时设置host

    1.7K30
    领券