instagram检测python请求

时间:2019-02-01 19:32:21

标签: python python-requests instagram

我使用python用于网络刮但Instagram的检测设备,如:
设备·Python请求·x City,x
并阻止连接, 我该如何解决?

Device · Python Requests

我尝试使用fake_useragentbrowser manual setting 代码:

def login(self):
    print ('Trying to login as %s...\n' % (self.username))
    self.s.headers.update({
        'Accept': '*/*',
        'Accept-Encoding' : 'gzip, deflate',
        'Accept-Language' : 'en-US;q=0.6,en;q=0.4',
        'authority': 'www.instagram.com',
        'ContentType' : 'application/x-www-form-urlencoded',
        'Connection': 'keep-alive',
        'Host' : 'www.instagram.com',
        'origin': 'https://www.instagram.com',
        'Referer': 'https://www.instagram.com',
        'Upgrade-Insecure-Requests':'1',
        'UserAgent':self.ua.random,
        'x-instagram-ajax':'1',
        'X-Requested-With': 'XMLHttpRequest'
    })
    r = self.s.get('https://www.instagram.com/') 
    self.s.headers.update({'X-CSRFToken' : r.cookies.get_dict()['csrftoken']})
    r = self.s.post('https://www.instagram.com/accounts/login/ajax/', data={'username':self.username, 'password':self.password}, allow_redirects=True)
    self.s.headers.update({'X-CSRFToken' : r.cookies.get_dict()['csrftoken']})
    loginstatus = json.loads(r.text)
    if loginstatus['authenticated'] == True :
        print ('Login Success')
        self.login_status=True
        return True
    elif loginstatus['authenticated'] == False :
        return False

2 个答案:

答案 0 :(得分:0)

其中包含很多JavaScript。使用python requests,您可以直接从Web服务器获取HTTP响应。它必须在浏览器中呈现,才能从页面获取所有信息和内容。

解决此问题的最简单方法是使用selenium.

答案 1 :(得分:0)

您可以尝试不同的方法。尝试使用您的浏览器之一复制User-Agent,如果它不起作用,可能是因为它使用某些cookie或localStorage来存储有关登录的信息。尝试在浏览器上检查cookie,并按域对它们进行过滤,然后将值复制到字典中。

cookies = {"key": "value"} #Dictionary as cookies
credentials = {'username': username, 'password': password}
r = requests.post("http://examples.com",
        cookies=cookies, 
        data=credentials,
        allow_redirects=True)